LPFRHOOKPROC 回呼函式 (commdlg.h)
接收適用於 [尋找 ] 或 [ 取代 ] 對話框之預設對話框程序的訊息或通知。 FRHookProc 攔截程式是搭配 FindText 或 ReplaceText 函式使用的應用程式定義或連結庫定義回呼函式。
LPFRHOOKPROC 類型會定義這個回呼函式的指標。 FRHookProc 是應用程式定義函數名稱的佔位元。
語法
LPFRHOOKPROC Lpfrhookproc;
UINT_PTR Lpfrhookproc(
HWND unnamedParam1,
UINT unnamedParam2,
WPARAM unnamedParam3,
LPARAM unnamedParam4
)
{...}
參數
unnamedParam1
訊息預定的 [ 尋找 ] 或 [ 取代 ] 對話框的句柄。
unnamedParam2
正在接收之訊息的標識碼。
unnamedParam3
有關訊息的其他資訊。 確切的意義取決於 unnamedParam2 參數的值。
unnamedParam4
有關訊息的其他資訊。 確切的意義取決於 unnamedParam2 參數的值。
如果 unnamedParam2 參數指出 WM_INITDIALOG 訊息, unnamedParam4 是 FINDREPLACE 結構的指標,其中包含建立對話框時所指定的值。
傳回值
如果攔截程式傳回零,則默認對話框程式會處理訊息。
如果攔截程式傳回非零值,則默認對話框程式會忽略訊息。
備註
當您使用 FindText 或 ReplaceText 函式來建立 [尋找 ] 或 [ 取代 ] 對話框時,您可以提供 FRHookProc 攔截程式來處理用於對話框程式的訊息或通知。 若要啟用攔截程式,請使用您傳遞至對話框建立函式的 FINDREPLACE 結構。 在 lpfnHook 成員中指定攔截程式的位址,並在 Flags 成員中指定FR_ENABLEHOOK旗標。
默認對話框程式會先處理 WM_INITDIALOG 訊息,再將訊息傳遞至攔截程式。 針對所有其他訊息,攔截程式會先接收訊息。 然後,攔截程式的傳回值會決定預設對話框程式是否處理訊息或忽略訊息。
如果勾點程式處理 WM_CTLCOLORDLG 訊息,則必須傳回有效的筆刷句柄,以繪製對話框的背景。 一般而言,如果攔截程序處理任何 WM_CTLCOLOR* 訊息,則必須傳回有效的筆刷句柄,以繪製指定控件的背景。
請勿從攔截程式呼叫 EndDialog 函式。 相反地,攔截程式可以呼叫PostMessage函式,將具有IDABORT值的WM_COMMAND訊息張貼至對話框程式。 張貼 IDABORT 會關閉對話框,並讓對話框函式傳回 FALSE。 如果您需要知道攔截程式為何關閉對話框,您必須在攔截程式與應用程式之間提供自己的通訊機制。
您可以將通用對話框的標準控件子類別化。 不過,對話框程式也可以將控件子類別化。 因此,當您的攔截程式處理 WM_INITDIALOG 訊息時,您應該使用子類別控件。 這可確保子類別程式會在對話框程式所設定的子類別程式之前收到控件特定的訊息。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | commdlg.h (包含 Windows.h) |
另請參閱
概念
參考