OFNHookProc是用於電腦系統的一個函式。
基本介紹
- 中文名:OFNHookProc
- 簡介:應用程式定義的庫定義的回調函式
- 函式原型:UINT CALLBACK OFNHookProc
- 實用:Windows:95及以上版本
函式功能,函式原型,參數,
函式功能
該掛鈎函式是應用程式定義的或庫定義的回調函式,此回調函式與Explorer_Style和Save As公共對話框一起使用。函式貯存從公共對話框傳送來的訊息或通知LPOFNHOOKPROC類型定義一個指向回調函式指針,OFNHOOKProc是應用程式定義的或庫定義的函式名的位置占有者,當創建一個Open或Save As公共對話框時,如果沒有指定OFN_EXPLORER標誌且需一個掛鈎函式。必須用舊式的OFNHookProcOldSttyle掛鈎函式。這種情況下對話框將顯示舊式的用戶界面。
函式原型
UINT CALLBACK OFNHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM IParam);
參數
hdlg:指向Open或Save as對話框的子對話框的句柄。用GetParent函式可得到指向Open或Save As對話框視窗的句柄。
uiMsg.標識存放的訊息。
wParam:指定有關訊息的其他信息。精確的意義要根據uiMSg參數的值來決定。
IParam;指定有關訊息的其他信息。精確的意義要根據uiMsg參數的值來決定。如果uiMsg參數顯示了WM_INITDIALOG訊息,IParam是一個指向OPENFILENAME結構的指針。該結構含有創建對話框時指定的值。
返回值:如果掛鈎函式返回零,預設對話框函式處理訊息。如果掛鈎函式返回非零值,預設對話框函式忽略訊息。對於CDN_SHAREVIOLATION和CDN_FILEOK通告訊息,掛鈎函式應該返回非零值,以表明已經利用SetWindowLong函式設定了一個非零DWL_MSGRESULT值。
備註:當用GetOpenFileName或GetSaveFileName函式創建瀏覽器風格的Open或Save As公共對話框時,可以提供一個OFNHookProc掛鈎函式。為使掛鈎函式生效,須套用傳遞到對話創建函式的OPENFILENAME結構,且須指定一個指向PfnHook成員中的掛鈎函式的指針,及指定Flags成員中OFN_ENABLEHOOK標識。
如果為瀏覽器風格的公共對話框提供了一個掛鈎函式,系統創建了一個預設對話框的子對話框,掛鈎函式為子對話框作為對話函式,此子對話框以OPENHLENAME結構指定的模組為基礎,或如果沒有指定模板,對話框是一個預設的子對話框。當預設對話框函式正在創建WM_INITDALOG訊息時,創建了子對話框。在子對話框處理它本身的WM_INITDIALOG訊息時,預設對話函式刪除掉標準控制臺,如果需要,可為子對話框的其他的任何一個控制臺提供空間,然後系統將CDN_INITDONE通告訊息傳送給掛鈎函式。
掛鈎函式不接收指定給預設對話框的標準控制臺的訊息。可以對控制臺進行子分類,但是如果控制臺使應用程式與公共對話框將來的版本不一致,那么不能進行子分類。但瀏覽器風格的公共對話框提供了一套訊息,此掛鈎函式可利用此訊息來最小化和控制對話框。它包括了從對話框傳送來的一組通知訊息,還有可以傳送到從對話框檢取信息的訊息。關於這些訊息的全部列表,參見EXplorer-Style HookProcedures。如果掛鈎函式處理WM_CTLCOLORDLG信息,它必須返回一個有效的刷子句柄,以刷對話的背景。總之,如果掛鈎函式處理任何一個WM_CTLCOLOR訊息,那么必須返回一個有效刷子句柄,以繪製指定控制背景。不須從掛鈎函式調用EndDialog函式。相反,掛鈎能調用PostMessage函式把帶有IDABORT值的一個WM_COMMAND信息,傳送給對話框函式Posting IDABORT來關閉對話框,使對話框函式返回FALSE值。若要了解為什麼掛鈎函式關閉對話框,必須提供掛鈎函式和應用程式之間的聯繫機理。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭檔案:commdlg.h;庫檔案:用戶自定義。