<Return[F]><Top>

FindText

Declare Function Api_FindText& Lib "comdlg32" Alias "FindTextA" (pFindreplace As FINDREPLACE)

Declare Function FindText Lib "comdlg32" Alias "FindTextA" (pFindreplace As FINDREPLACE) As Long

システムが定義したモードレスの[検索]ダイアログボックスを作成する。1 つの文書内のテキストを検索する際に、ユーザーはこのダイアログボックスを使って、検索文字列の入力とオプションの指定を行う。

パラメータ
lpfr
    [入力]ダイアログボックスの初期化に使う情報を保持する 構造体へのポインタを指定する。

    このダイアログボックスはこの構造体を使って、ユーザーが入力した情報をアプリケーションへ送信する。

戻り値
    関数が成功すると、ダイアログボックスのウィンドウハンドルが返る。

    このウィンドウハンドルを使って、ダイアログボックスとの通信やクローズを行える。

    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、CommDlgExtendedError 関数を使う。

解説
    FindText 関数は、検索操作を行わない。代わりに、FINDMSGSTRING の登録メッセージを、ダイアログボックスのオーナーウィンドウの

    ウィンドウプロシージャへ送信する。このダイアログボックスを作成すると、FINDREPLACE 構造体の hwndOwner メンバに、オーナーウィ

    ンドウのハンドルが格納される。
    FindText 関数を呼び出す前に、RegisterWindowMessage 関数を呼び出して、 メッセージの識別子を取得しなければならない。ユーザー

    が[次を検索]ボタンをクリックしたり、ダイアログボックスを閉じようとしたときに、ダイアログボックスプロシージャはこの識別子を使ってメッセ

    ージを送信する。FINDMSGSTRING メッセージの lParam パラメータは、FINDREPLACE 構造体へのポインタを保持する。

    FINDREPLACE 構造体の Flags メンバは、このメッセージを発生させたイベントを示す。

    この構造体の他のメンバは、ユーザーの入力を示す。
    [検索]ダイアログボックスを作成したときは、ダイアログボックス内で、TAB キーや ESC キーのようなキーボード入力が正しく処理されるこ

    とを保証するために、メインメッセージループ内で IsDialogMessage 関数も使わなければならない。IsDialogMessage は、このダイアログボッ

    クスがメッセージを処理したかどうかを示す 1 つの値を返す。
    [検索]ダイアログボックス用のフックプロシージャ FRHookProc を提供することもできる。このフックプロシージャは、このダイアログボックス

    へ送信されたメッセージを処理できる。このダイアログボックスでフックプロシージャを有効にするには、FINDREPLACE 構造体の Flags メン

    バに FR_ENABLEHOOK フラグをセットし、lpfnHook メンバでそのフックプロシージャのアドレスを指定する。