### 函数功能

该挂钩函数是应用程序定义或库定义的回调函数。此回调函数与Open和Save AS公共话框一起使用。函数接收指定给对话框函数的消息或通告。LPOFNHOOKPROC类型定义了一个指向这种回调函数的指针。OFNHookProcOldStyle是应用程序定义的或库定义的函数名的位置占有者。当创建一个Open或Save As公共对话框时，如果指定OFN_EXPLORER标志且需一个挂钩函数，那么必须应用一个Explorer_style的OFNHookProc挂钩函数。

### 函数原型

UINT CALLBACK OFNHookProcOldStyle（HWND hdlg，UINT uiMsg WPARAM wParam，LPARAM IParam）；

### 参数

hdlg：指向消息指定的Open或Save As对话框窗口。
uiMsg：标识接收的消息。
wParam：指定有关消息的其他信息。精确的意义要根据uiMSg参数的值来决定。
IParam：指定有关消息的其他信息。精确的意义要根据uiMsg参数的值来决定。如果uiMsg参数显示了WM_INITDIALOG消息，IParam是一个指向OPENFILENAME结构的指针。该结构含有创建对话框时指定的值。

### 返回值

如果挂钩函数返回零，缺省对话框函数处理消息；如果挂钩函数返回非零值，缺省对话框忽略消息。
备注：当用GetOpenFileName或GetSaveFileName函数创建一个旧式的Open或Save As对话框时。可以提供一个OFNHookProcOldStyle挂钩函数。为使挂钩函数生效，须应用传递到对话创建函数的OPENHLENAME结构，且须指定一个指向IpnHook成员中的挂钩函数的指针，及指定Flags成员中OFN_ENABLEHOOK标识。如果挂钩函数处理WM_CTLCOLORDLG消息，那么必须返回一个有效的刷子句柄，以便绘制对话框的背景。总之，如果挂钩函数处理任何一种WM_CTLCOLOR信息，那么必须返回一个有效的刷子句柄以绘制指定控制的背景。不须从挂钩函数调用EndDialog函数。相反，挂钩函数能调用PostMessage函数，把带有IDABORT值的一个WM_COMMAND信息传送给对话框函数PostingIDABORT，并关闭对话框，使对话框函数返回 FALSE值，若要了解为什么挂钩函数关闭对话框，必须提供挂钩函数和应用程序之间的联系机理。可以对公共对话框的标准控制面板进行子分类。但是公共对话框函数也可以对控制面板进行子分类。正因如此，必须在挂钩函数WM_INTDIALDG处理消息时对控制面板子分类。这就保证对话框函数设置子分类函数之前，子分类函数接收指定的控制消息。

### 速查

Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；头文件：commdlg.h；库文件：用户自定义。