複製鏈接
請複製以下鏈接發送給好友

OFNHookProc

鎖定
OFNHookProc是用於電腦系統的一個函數。
中文名
OFNHookProc
簡    介
應用程序定義的庫定義的回調函數
函數原型
UINT CALLBACK OFNHookProc
實    用
Windows:95及以上版本

OFNHookProc函數功能

該掛鈎函數是應用程序定義的或庫定義的回調函數,此回調函數與Explorer_Style和Save As公共對話框一起使用。函數貯存從公共對話框發送來的消息或通知LPOFNHOOKPROC類型定義一個指向回調函數指針,OFNHOOKProc是應用程序定義的或庫定義的函數名的位置佔有者,當創建一個Open或Save As公共對話框時,如果沒有指定OFN_EXPLORER標誌且需一個掛鈎函數。必須用舊式的OFNHookProcOldSttyle掛鈎函數。這種情況下對話框將顯示舊式的用户界面。

OFNHookProc函數原型

UINT CALLBACK OFNHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM IParam);

OFNHookProc參數

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;庫文件:用户自定義。