Mfc-rich-edit

提供:Dev Guides
移動先:案内検索

MFC-リッチエディット

リッチ編集*コントロールは、ユーザーがテキストを入力および編集できるウィンドウです。 テキストには文字と段落の書式を割り当てることができ、埋め込みOLEオブジェクトを含めることができます。 *CRichEditCtrl クラスで表されます。

____これは、CRichEditCtrlクラスのメソッドのリストです。

Sr.No. Name & Description
1

CanPaste

クリップボードの内容をこのリッチエディットコントロールに貼り付けることができるかどうかを決定します。

2

CanRedo

コントロールのやり直しキューにアクションがあるかどうかを決定します。

3

CanUndo

編集操作を元に戻すことができるかどうかを決定します。

4

CharFromPos

編集コントロールのクライアント領域内の指定されたポイントに最も近い文字に関する情報を取得します。

5

Clear

現在の選択をクリアします。

6

Copy

現在の選択をクリップボードにコピーします。

7

Create

Windowsリッチエディットコントロールを作成し、このCRichEditCtrlオブジェクトに関連付けます。

8

CreateEx

指定された拡張WindowsスタイルでWindowsリッチエディットコントロールを作成し、このCRichEditCtrlオブジェクトに関連付けます。

9

Cut

現在の選択をクリップボードに切り取ります。

10

DisplayBand

このCRichEditCtrlオブジェクトの内容の一部を表示します。

11

EmptyUndoBuffer

このCRichEditCtrlオブジェクトの取り消しフラグをリセット(クリア)します。

12

FindText

このCRichEditCtrlオブジェクト内のテキストを見つけます。

13

FindWordBreak

指定された文字位置の前後にある次の単語区切りを見つけるか、その位置の文字に関する情報を取得します。

14

FormatRange

ターゲット出力デバイスのテキスト範囲をフォーマットします。

15

GetCharPos

このCRichEditCtrlオブジェクト内の特定の文字の位置を決定します。

16

GetDefaultCharFormat

このCRichEditCtrlオブジェクトの現在のデフォルトの文字フォーマット属性を取得します。

17

GetEventMask

このCRichEditCtrlオブジェクトのイベントマスクを取得します。

18

GetFirstVisibleLine

このCRichEditCtrlオブジェクトの最上部に表示される行を決定します。

19

GetIRichEditOle

このリッチエディットコントロールの IRichEditOle インターフェイスへのポインターを取得します。

20

GetLimitText

ユーザーがこのCRichEditCtrlオブジェクトに入力できるテキストの量の制限を取得します。

21

GetLine

このCRichEditCtrlオブジェクトからテキスト行を取得します。

22

GetLineCount

このCRichEditCtrlオブジェクトの行数を取得します。

23

GetModify

このCRichEditCtrlオブジェクトの内容が最後の保存以降に変更されたかどうかを決定します。

24

GetOptions

リッチエディットコントロールオプションを取得します。

25

GetParaFormat

このCRichEditCtrlオブジェクトで現在選択されている段落の書式設定属性を取得します。

26

GetPunctuation

リッチエディットコントロールの現在の句読点を取得します。 このメッセージは、アジア言語バージョンのオペレーティングシステムでのみ使用できます。

27

GetRect

このCRichEditCtrlオブジェクトのフォーマット長方形を取得します。

28

GetRedoName

コントロールの再実行キューに次のアクションがあれば、そのタイプを取得します。

29

GetSel

このCRichEditCtrlオブジェクトの現在の選択範囲の開始位置と終了位置を取得します。

30

GetSelectionCharFormat

このCRichEditCtrlオブジェクトで現在選択されている文字フォーマット属性を取得します。

31

GetSelectionType

このCRichEditCtrlオブジェクトで現在選択されているコンテンツの種類を取得します。

32

GetSelText

このCRichEditCtrlオブジェクトの現在の選択範囲のテキストを取得します。

33

GetTextLength

このCRichEditCtrlオブジェクト内のテキストの長さを文字数で取得します。 終端のヌル文字は含まれません。

34

GetTextLengthEx

リッチエディットビューの文字数またはバイト数を取得します。 リッチエディットコントロールでテキストの長さを決定する方法を示すフラグのリストを受け入れます。

35

GetTextMode

リッチエディットコントロールの現在のテキストモードと元に戻すレベルを取得します。

36

GetTextRange

指定された範囲のテキストを取得します。

37

GetUndoName

次の取り消しアクションのタイプを取得します(ある場合)。

38

GetWordWrapMode

リッチエディットコントロールの現在のワードラップおよびワードブレークオプションを取得します。 このメッセージは、オペレーティングシステムのアジア言語バージョンでのみ使用可能です。

39

HideSelection

現在の選択を表示または非表示にします。

40

LimitText

ユーザーがCRichEditCtrlオブジェクトに入力できるテキストの量を制限します。

41

LineFromChar

指定された文字を含む行を決定します。

42

LineIndex

このCRichEditCtrlオブジェクト内の指定された行の文字インデックスを取得します。

43

LineLength

このCRichEditCtrlオブジェクトの指定された行の長さを取得します。

44

LineScroll

このCRichEditCtrlオブジェクトのテキストをスクロールします。

45

Paste

クリップボードの内容をこのリッチエディットコントロールに挿入します。

46

PasteSpecial

クリップボードの内容を、指定されたデータ形式でこのリッチエディットコントロールに挿入します。

47

PosFromChar

編集コントロール内の指定された文字のクライアント領域座標を取得します。

48

Redo

コントロールの再実行キュー内の次のアクションを再実行します。

49

ReplaceSel

このCRichEditCtrlオブジェクトの現在の選択を指定されたテキストに置き換えます。

50

RequestResize

このCRichEditCtrlオブジェクトに、リクエストのサイズ変更通知を強制的に送信させます。

51

SetAutoURLDetect

リッチエディットコントロールで自動URL検出がアクティブかどうかを示します。

52

SetBackgroundColor

このCRichEditCtrlオブジェクトの背景色を設定します。

53

SetDefaultCharFormat

このCRichEditCtrlオブジェクトの現在のデフォルトの文字フォーマット属性を設定します。

54

SetEventMask

このCRichEditCtrlオブジェクトのイベントマスクを設定します。

55

SetModify

このCRichEditCtrlオブジェクトの変更フラグを設定またはクリアします。

56

SetOLECallback

このリッチエディットコントロールの IRichEditOleCallback COMオブジェクトを設定します。

57

SetOptions

このCRichEditCtrlオブジェクトのオプションを設定します。

58

SetParaFormat

このCRichEditCtrlオブジェクトの現在の選択で段落書式属性を設定します。

59

SetPunctuation

リッチエディットコントロールの句読点を設定します。 このメッセージは、アジア言語バージョンのオペレーティングシステムでのみ使用できます。

61

SetReadOnly

このCRichEditCtrlオブジェクトの読み取り専用オプションを設定します。

62

SetRect

このCRichEditCtrlオブジェクトのフォーマット長方形を設定します。

63

SetSel

このCRichEditCtrlオブジェクトの選択を設定します。

64

SetSelectionCharFormat

このCRichEditCtrlオブジェクトの現在の選択に文字書式属性を設定します。

65

SetTargetDevice

このCRichEditCtrlオブジェクトのターゲット出力デバイスを設定します。

66

SetTextMode

リッチエディットコントロールのテキストモードまたは元に戻すレベルを設定します。 コントロールにテキストが含まれている場合、メッセージは失敗します。

67

SetUndoLimit

元に戻すキューに保存できるアクションの最大数を設定します。

68

SetWordCharFormat

このCRichEditCtrlオブジェクトの現在の単語の文字書式属性を設定します。

69

SetWordWrapMode

リッチエディットコントロールのワードラップおよびワードブレークオプションを設定します。 このメッセージは、アジア言語バージョンのオペレーティングシステムでのみ使用できます。

70

StopGroupTyping

コントロールが追加の入力アクションを現在の元に戻すアクションに収集するのを停止します。 コントロールは、次の入力アクションがあれば、元に戻すキューの新しいアクションに保存します。

71

StreamIn

入力ストリームからこのCRichEditCtrlオブジェクトにテキストを挿入します

72

StreamOut

このCRichEditCtrlオブジェクトのテキストを出力ストリームに保存します。

73

Undo

最後の編集操作を取り消します。

____これは、リッチエディットコントロールのメッセージマッピングのリストです。

Message Map entry Description
EN_CHANGE ON_EN_CHANGE( <id>, <memberFxn> ) The user has taken an action that may have altered text in an edit control.
EN_ERRSPACE ON_EN_ERRSPACE( <id>, <memberFxn> ) The edit control cannot allocate enough memory to meet a specific request.
EN_HSCROLL ON_EN_HSCROLL( <id>, <memberFxn> ) The user clicks an edit control’s horizontal scroll bar. The parent window is notified before the screen is updated.
EN_KILLFOCUS ON_EN_KILLFOCUS( <id>, <memberFxn> ) The edit control loses the input focus.
MAXTEXT ON_MAXTEXT( <id>, <memberFxn> ) The current insertion has exceeded the specified number of characters for the edit control and has been truncated.
EN_SETFOCUS ON_EN_SETFOCUS( <id>, <memberFxn> ) Sent when an edit control receives the input focus.
EN_UPDATE ON_EN_UPDATE( <id>, <memberFxn> ) he edit control is about to display altered text. Sent after the control has formatted the text but before it screens the text so that the window size can be altered, if necessary.
EN_VSCROLL ON_EN_VSCROLL( <id>, <memberFxn> ) The user clicks an edit control’s vertical scroll bar. The parent window is notified before the screen is updated.

新しいMFCダイアログベースのアプリケーションを作成して、簡単な例を見てみましょう。

  • ステップ1 *-TODO行を削除し、ツールボックスから1つのリッチエディットコントロールと3つのボタンをドラッグします。

リッチ編集

  • ステップ2 *-これらの3つのボタンのキャプションを太字、斜体、下線からそれぞれIDC_BUTTON_BOLD、IDC_BUTTON_ITALIC、IDC_BUTTON_UNDERLINEに変更します。
  • ステップ3 *-次のプロパティをTrueに設定します:Multiline、Want Return、Vertical Scroll。
  • ステップ4 *-リッチエディットコントロールのコントロール変数m_richEditを追加します。

リッチ編集

*ステップ5 *-CMFCRichEditAppに移動し、次のコードに示すように、CMFCRichEditApp
InitInstance()関数で* :: AfxInitRichEdit2()*を呼び出します。
BOOL CMFCRichEditApp::InitInstance() {
//TODO: call AfxInitRichEdit2() to initialize richedit2 library.
  //InitCommonControlsEx() is required on Windows XP if an application
  //manifest specifies use of ComCtl32.dll version 6 or later to enable
  //visual styles. Otherwise, any window creation will fail.
   INITCOMMONCONTROLSEX InitCtrls;
   InitCtrls.dwSize = sizeof(InitCtrls);
  //Set this to include all the common control classes you want to use
  //in your application.
   InitCtrls.dwICC = ICC_WIN95_CLASSES;
   InitCommonControlsEx(&InitCtrls);

   ::AfxInitRichEdit2();
   CWinApp::InitInstance();


   AfxEnableControlContainer();

  //Create the shell manager, in case the dialog contains
  //any shell tree view or shell list view controls.
   CShellManager *pShellManager = new CShellManager;

  //Activate "Windows Native" visual manager for enabling themes in MFC controls
   CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

  //Standard initialization
  //If you are not using these features and wish to reduce the size
  //of your final executable, you should remove from the following
  //the specific initialization routines you do not need
  //Change the registry key under which our settings are stored
  //TODO: You should modify this string to be something appropriate
  //such as the name of your company or organization
   SetRegistryKey(_T("Local AppWizard-Generated Applications"));

   CMFCRichEditDlg dlg;
   m_pMainWnd = &dlg;
   INT_PTR nResponse = dlg.DoModal();
   if (nResponse == IDOK) {
     //TODO: Place code here to handle when the dialog is
     //dismissed with OK
   }else if (nResponse == IDCANCEL) {
     //TODO: Place code here to handle when the dialog is
     //dismissed with Cancel
   }else if (nResponse == -1) {
      TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so
                                application is terminating unexpectedly.\n");
      TRACE(traceAppMsg, 0, "Warning: if you are using MFC controls on
              the dialog, you cannot #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS.\n");
   }

  //Delete the shell manager created above.
   if (pShellManager != NULL) {
      delete pShellManager;
   }

  //Since the dialog has been closed, return FALSE so that we exit the
  //application, rather than start the application's message pump.
   return FALSE;
}
  • ステップ6 *-3つのボタンすべてにClickイベントハンドラーを追加します。 これらのイベントの実装は次のとおりです。
void CMFCRichEditDlg::OnBnClickedButtonBold() {
  //TODO: Add your control notification handler code here
   CHARFORMAT Cfm;

   m_richEdit.GetSelectionCharFormat(Cfm);

   Cfm.cbSize = sizeof(CHARFORMAT);
   Cfm.dwMask = CFM_BOLD;
   Cfm.dwEffects ^= CFE_BOLD;

   m_richEdit.SetSelectionCharFormat(Cfm);
   m_richEdit.SetFocus();
}

void CMFCRichEditDlg::OnBnClickedButtonItalic() {
  //TODO: Add your control notification handler code here
   CHARFORMAT Cfm;

   m_richEdit.GetSelectionCharFormat(Cfm);

   Cfm.cbSize = sizeof(CHARFORMAT);
   Cfm.dwMask = CFM_ITALIC;
   Cfm.dwEffects ^= CFE_ITALIC;

   m_richEdit.SetSelectionCharFormat(Cfm);
   m_richEdit.SetFocus();
}

void CMFCRichEditDlg::OnBnClickedButtonUnderline() {
  //TODO: Add your control notification handler code here
   CHARFORMAT Cfm;

   m_richEdit.GetSelectionCharFormat(Cfm);

   Cfm.cbSize = sizeof(CHARFORMAT);
   Cfm.dwMask = CFM_UNDERLINE;
   Cfm.dwEffects ^= CFE_UNDERLINE;

   m_richEdit.SetSelectionCharFormat(Cfm);
   m_richEdit.SetFocus();
}
  • ステップ7 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。 テキストを入力し、テキストを選択して書式を変更し、3つのボタンのいずれかをクリックします。

リッチ編集