Mfc-rich-edit
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つのボタンのいずれかをクリックします。