马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
函数功能:
DialogBox 函数用于创建一个基于模板资源的模态(模式)对话框。
除非调用 EndDialog 函数终止模态对话框,否则 DialogBox 函数不会交出控制权。
基于模板资源,DialogBox创建了一个模态对话框。DialogBox 函数的返回是由特殊的回调函数控制的,它会调用 EndDialog 函数终止模态对话框。
DialogBox 函数是通过调用 DialogBoxParam 函数来实现的。
API 函数原型:
INT_PTR WINAPI DialogBox(
_In_opt_ HINSTANCE hInstance,
_In_ LPCTSTR lpTemplate,
_In_opt_ HWND hWndParent,
_In_opt_ DLGPROC lpDialogFunc
);
参数解析:
参数 | 含义 | hInstance | 1. 指向包含该对话框实例的模块的句柄
2. 如果参数值为 NULL,则使用当前的可执行文件 | lpTemplate | 用于指定对话框的模板:1. 如果是字符串,则用于指定对话框的名字;2. 如果是 int 值,则用于指定对话框的模板资源。如果参数是用于指定对话框资源,那它的高字节必须是 0,低字节必须包含标识。通常,你可以使用 MAKEINTRESOURCE 宏来创建这个值 | hWndParent | 指向该对话框的窗口的句柄 | lpDialogFunc | 1. 一个指向对话框处理函数的指针
2. 处理函数的相关内容见 DialogProc 函数 |
返回值:
1. 如果执行成功,则返回值是调用 EndDialog 函数时传给它的参数 nResult ;
2. 如果执行失败,有多种原因:
- 如果参数 hWndParent 无效,返回 0。这是为了与以前版本的 Windows 兼容
- 其他原因,返回 -1,更多的错误信息,需要调用 GetLastError 函数。
执行失败一般是因为下列原因:
- 传入了一个无效的参数;
- 系统类被其他模块注册;
- 使用了 WH_CBT 钩子(hook),并且返回了一个失败的代码;
- 对话框模板中的某个控件未注册,或者对话框的窗口处理函数处理 WM_CREATE 消息或 WM_NCCREATE 消息失败。
备注:
1. DialogBox 宏调用 CreateWindowEx 函数创建对话框后,会发送一个 WM_INITDIALOG 消息(如果模板指定了 DS_SETFONT 或者 DS_SHELLFONT ,也会发送 WM_SETFONT 消息)给对话框的处理函数,然后 CreateWindowEx 函数会显示出对话框(无论模板是否指定了 WM_VISIBLE ),禁止父窗口,开始它自己的消息循环,为该对话框检索、发送消息。
2. 当对话框的处理函数调用了 EndDialog 函数后,DialogBox 会销毁该对话框,结束它的消息循环,激活其父窗口(如果可以被激活的话),返回由对话框处理函数指定的 nResult 参数(它是被传递给 EndDialog 函数的)。
需求:
Minimum supported client | Windows 2000 专业版 [仅桌面应用程序] | Minimum supported server | Windows 2000 服务器版 [仅桌面应用程序] | Header | Winuser.h (包含于 Windows.h) | Library | User32.lib | DLL | User32.dll | Unicode and ANSI names | DialogBoxW (Unicode) 和 DialogBoxA (ANSI) |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|