CFindReplaceDialog クラス
標準文字列の [検索/置換] ダイアログ ボックスをアプリケーションに実装できます。
構文
class CFindReplaceDialog : public CCommonDialog
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CFindReplaceDialog::CFindReplaceDialog | オブジェクトを構築するには、この関数を CFindReplaceDialog 呼び出します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CFindReplaceDialog::Create | ダイアログ ボックスを CFindReplaceDialog 作成して表示します。 |
CFindReplaceDialog::FindNext | この関数を呼び出して、ユーザーが検索文字列の次の出現箇所を検索するかどうかを判断します。 |
CFindReplaceDialog::GetFindString | この関数を呼び出して、現在の検索文字列を取得します。 |
CFindReplaceDialog::GetNotifier | この関数を呼び出して、 FINDREPLACE 登録済みのメッセージ ハンドラーで構造体を取得します。 |
CFindReplaceDialog::GetReplaceString | 現在の置換文字列を取得するには、この関数を呼び出します。 |
CFindReplaceDialog::IsTerminating | この関数を呼び出して、ダイアログ ボックスが終了しているかどうかを確認します。 |
CFindReplaceDialog::MatchCase | この関数を呼び出して、ユーザーが検索文字列の大文字と小文字を正確に一致させるかどうかを判断します。 |
CFindReplaceDialog::MatchWholeWord | この関数を呼び出して、ユーザーが単語全体のみを照合するかどうかを判断します。 |
CFindReplaceDialog::ReplaceAll | この関数を呼び出して、ユーザーが文字列のすべての出現箇所を置き換えるかどうかを判断します。 |
CFindReplaceDialog::ReplaceCurrent | この関数を呼び出して、ユーザーが現在の単語を置き換えるかどうかを判断します。 |
CFindReplaceDialog::SearchDown | この関数を呼び出して、ユーザーが検索を下方向に進めるかどうかを判断します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CFindReplaceDialog::m_fr | オブジェクトをカスタマイズするために使用される CFindReplaceDialog 構造体。 |
解説
他の Windows の一般的なダイアログ ボックスとは異なり、 CFindReplaceDialog
オブジェクトはモードレスであり、ユーザーは画面上の他のウィンドウと対話できます。 オブジェクトには、[検索] ダイアログ ボックスと [検索と置換] ダイアログ ボックスの CFindReplaceDialog
2 種類があります。 ダイアログ ボックスを使用すると、検索と検索/置換の文字列を入力できますが、検索や置換の関数は実行されません。 これらをアプリケーションに追加する必要があります。
オブジェクトを CFindReplaceDialog
構築するには、指定されたコンストラクターを使用します (引数はありません)。 これはモードレス ダイアログ ボックスであるため、スタックではなく演算子を使用して new
ヒープにオブジェクトを割り当てます。
オブジェクトがCFindReplaceDialog
作成されたら、Create メンバー関数を呼び出してダイアログ ボックスを作成して表示する必要があります。
m_fr構造体を使用して、呼び出すCreate
前にダイアログ ボックスを初期化します。 構造体の型は m_fr
FINDREPLACE です。 この構造の詳細については、Windows SDK を参照してください。
検索/置換要求を親ウィンドウに通知するには、Windows RegisterWindowMessage 関数を使用し、この登録済みメッセージを処理するフレーム ウィンドウで ON_REGISTERED_MESSAGE message-map マクロを使用する必要があります。
ユーザーがメンバー関数を使用してダイアログ ボックス IsTerminating
を終了することを決定したかどうかを確認できます。
CFindReplaceDialog
は、Windows バージョン 3.1 以降に付属する COMMDLG.DLL ファイルに依存しています。
ダイアログ ボックスをカスタマイズするには、クラスを CFindReplaceDialog
派生させ、カスタム ダイアログ テンプレートを指定し、拡張コントロールからの通知メッセージを処理するメッセージ マップを追加します。 未処理のメッセージは、基底クラスに渡す必要があります。
フック機能のカスタマイズは必要ありません。
使用CFindReplaceDialog
の詳細については、「共通ダイアログ クラス」を参照してください。
継承階層
CFindReplaceDialog
必要条件
ヘッダー: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
CFindReplaceDialog
オブジェクトを構築します。
CFindReplaceDialog();
解説
CFindReplaceDialog
オブジェクトはモードレス ダイアログ ボックスであるため、演算子を使用してヒープ上に作成するnew
必要があります。
破棄中、フレームワークはダイアログ ボックスへのポインターに対して a を実行 delete this;
しようとします。 スタック上にダイアログ ボックスを作成した場合、 this
ポインターは存在せず、未定義の動作が発生する可能性があります。
オブジェクトの構築のCFindReplaceDialog
詳細については、CFindReplaceDialog の概要を参照してください。 ダイアログ ボックスを表示するには、 CFindReplaceDialog::Create メンバー関数を使用します。
例
// m_pFRDlg is a pointer to a class derived from CFindReplaceDialog
// which defines variables used by the FINDREPLACE structure.
// InitFindReplaceDlg creates a CFindReplaceDialog and initializes
// the m_fr with the data members from the derived class
void CMyRichEditView::InitFindReplaceDlg()
{
if (NULL == m_pFRDlg)
{
m_pFRDlg = new CMyFindReplaceDialog(); // Must be created on the heap
m_pFRDlg->Create(TRUE, _T(""), _T(""), FR_DOWN, this);
m_pFRDlg->m_fr.lStructSize = sizeof(FINDREPLACE);
m_pFRDlg->m_fr.hwndOwner = this->m_hWnd;
m_pFRDlg->m_fr.lpstrFindWhat = m_pFRDlg->GetFindWhatStr();
m_pFRDlg->m_fr.lpstrReplaceWith = m_pFRDlg->GetReplaceWithStr();
m_pFRDlg->m_fr.wFindWhatLen = m_pFRDlg->GetFindWhatStrLen();
m_pFRDlg->m_fr.wReplaceWithLen = m_pFRDlg->GetReplaceWithStrLen();
}
}
CFindReplaceDialog::Create
の値 bFindDialogOnly
に応じて、[検索] または [検索/置換] ダイアログ ボックス オブジェクトを作成して表示します。
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
パラメーター
bFindDialogOnly
[検索] ダイアログ ボックスを表示するには、このパラメーターを TRUE に設定します。 [検索/置換] ダイアログ ボックスを表示するにはStandard Editionを FAL に設定します。
lpszFindWhat
ダイアログ ボックスが表示されたときの既定の検索文字列へのポインター。 NULL の場合、ダイアログ ボックスには既定の検索文字列が含まれません。
lpszReplaceWith
ダイアログ ボックスが表示されたときの既定の置換文字列へのポインター。 NULL の場合、ダイアログ ボックスには既定の置換文字列が含まれません。
dwFlags
ビットごとの OR 演算子を使用して、ダイアログ ボックスの設定をカスタマイズするために使用できる 1 つ以上のフラグ。 既定値は FR_DOWN で、検索が下方向に進むよう指定します。 これらのフラグの 詳細については、Windows SDK の FINDREPLACE 構造体を参照してください。
pParentWnd
ダイアログ ボックスの親ウィンドウまたは所有者ウィンドウへのポインター。 これは、検索/置換アクションが要求されたことを示す特別なメッセージを受け取るウィンドウです。 NULL の場合、アプリケーションのメイン ウィンドウが使用されます。
戻り値
ダイアログ ボックス オブジェクトが正常に作成された場合は 0 以外。それ以外の場合は 0。
解説
検索/置換要求を親ウィンドウに通知するには、戻り値がアプリケーションのインスタンスに固有のメッセージ番号である Windows RegisterWindowMessage 関数を使用する必要があります。 フレーム ウィンドウには、この登録されたメッセージを処理するコールバック関数 ( OnFindReplace
次の例) を宣言するメッセージ マップ エントリが必要です。 次のコード フラグメントは、フレーム ウィンドウ クラスに対してこれを行う方法の例です CMyRichEditView
。
// Message handler declared in CMyRichEditView class declaration
protected:
afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam);
// Register FindReplace window message.
static UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);
// Message map entry to map from message to handler function.
ON_REGISTERED_MESSAGE(WM_FINDREPLACE, &CMyRichEditView::OnFindReplace)
OnFindReplace
関数内では、CFindReplaceDialog::FindNext メソッドと CFindReplaceDialog::IsTerminating メソッドを使用してユーザーの意図を解釈し、検索/置換操作のコードを作成します。
例
CFindReplaceDialog::CFindReplaceDialog の例を参照してください。
CFindReplaceDialog::FindNext
コールバック関数からこの関数を呼び出して、ユーザーが検索文字列の次の出現箇所を見つけるかどうかを判断します。
BOOL FindNext() const;
戻り値
ユーザーが検索文字列の次の出現箇所を検索する場合は 0 以外。それ以外の場合は 0。
CFindReplaceDialog::GetFindString
コールバック関数からこの関数を呼び出して、検索する既定の文字列を取得します。
CString GetFindString() const;
戻り値
検索する既定の文字列。
例
LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
UNREFERENCED_PARAMETER(wparam);
CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);
if (NULL != pDlg)
{
// Use pDlg as a pointer to the existing FindReplace dlg to
// call CFindReplaceDialog member functions
if (pDlg->IsTerminating())
{
CString csFindString;
CString csReplaceString;
csFindString = pDlg->GetFindString();
csReplaceString = pDlg->GetReplaceString();
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("FindString"), csFindString));
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("ReplaceString"), csReplaceString));
}
}
return 0;
}
CFindReplaceDialog::GetNotifier
この関数を呼び出して、現在の [置換の検索] ダイアログ ボックスへのポインターを取得します。
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
パラメーター
lParam
フレーム ウィンドウOnFindReplace
のメンバー関数に渡される lparam 値。
戻り値
現在のダイアログ ボックスへのポインター。
解説
現在のダイアログ ボックスにアクセスし、そのメンバー関数を呼び出し、構造体にアクセスするには、コールバック関数内で使用する m_fr
必要があります。
例
[置換の検索] ダイアログ ボックスから通知を受け取る OnFindReplace ハンドラーを登録する方法の例については、「 CFindReplaceDialog::Create 」を参照してください。
LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
UNREFERENCED_PARAMETER(wparam);
CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);
if (NULL != pDlg)
{
// Use pDlg as a pointer to the existing FindReplace dlg to
// call CFindReplaceDialog member functions
if (pDlg->IsTerminating())
{
CString csFindString;
CString csReplaceString;
csFindString = pDlg->GetFindString();
csReplaceString = pDlg->GetReplaceString();
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("FindString"), csFindString));
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("ReplaceString"), csReplaceString));
}
}
return 0;
}
CFindReplaceDialog::GetReplaceString
現在の置換文字列を取得するには、この関数を呼び出します。
CString GetReplaceString() const;
戻り値
見つかった文字列を置き換える既定の文字列。
例
CFindReplaceDialog::GetFindString の例を参照してください。
CFindReplaceDialog::IsTerminating
コールバック関数内でこの関数を呼び出して、ユーザーがダイアログ ボックスを終了することを決定したかどうかを判断します。
BOOL IsTerminating() const;
戻り値
ユーザーがダイアログ ボックスを終了することを決定した場合は 0 以外。それ以外の場合は 0。
例
CFindReplaceDialog::GetFindString の例を参照してください。
CFindReplaceDialog::m_fr
オブジェクトをカスタマイズ CFindReplaceDialog
するために使用します。
FINDREPLACE m_fr;
解説
m_fr
は FINDREPLACE 型 の構造体です。 そのメンバーには、ダイアログ ボックス オブジェクトの特性が格納されます。 オブジェクトを CFindReplaceDialog
作成した後、ダイアログ ボックスのさまざまな値を変更するために使用 m_fr
できます。
この構造の詳細については、Windows SDK の FINDREPLACE
構造を参照してください。
例
CFindReplaceDialog::CFindReplaceDialog の例を参照してください。
CFindReplaceDialog::MatchCase
この関数を呼び出して、ユーザーが検索文字列の大文字と小文字を正確に一致させるかどうかを判断します。
BOOL MatchCase() const;
戻り値
ユーザーが検索文字列の大文字と小文字が完全に一致する検索文字列の出現箇所を検索する場合は 0 以外。それ以外の場合は 0。
CFindReplaceDialog::MatchWholeWord
この関数を呼び出して、ユーザーが単語全体のみを照合するかどうかを判断します。
BOOL MatchWholeWord() const;
戻り値
ユーザーが検索文字列の単語全体のみを照合する場合は 0 以外。それ以外の場合は 0。
CFindReplaceDialog::ReplaceAll
この関数を呼び出して、ユーザーが文字列のすべての出現箇所を置き換えるかどうかを判断します。
BOOL ReplaceAll() const;
戻り値
ユーザーが置換文字列に一致するすべての文字列を置換することを要求した場合は 0 以外。それ以外の場合は 0。
CFindReplaceDialog::ReplaceCurrent
この関数を呼び出して、ユーザーが現在の単語を置き換えるかどうかを判断します。
BOOL ReplaceCurrent() const;
戻り値
現在選択されている文字列を置換文字列に置き換えることをユーザーが要求した場合は 0 以外。それ以外の場合は 0。
CFindReplaceDialog::SearchDown
この関数を呼び出して、ユーザーが検索を下方向に進めるかどうかを判断します。
BOOL SearchDown() const;
戻り値
ユーザーが検索を下方向に進めたい場合は 0 以外。ユーザーが検索を上方向に進めたい場合は 0。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示