曲径通幽论坛

标题: DialogBoxParam() -- 对话框 [打印本页]

作者: beyes    时间: 2012-2-4 17:10
标题: DialogBoxParam() -- 对话框
DialogBoxParam() 原型如下:
[C++] 纯文本查看 复制代码
int DialogBoxParam(   HINSTANCE hInstance,  
LPCTSTR lpTemplateName,
  HWND hWndParent,   
DLGPROC lpDialogFunc,   
PARAM dwInitParam);

对话框是比较常用的窗口,比如向用户发出警告信息,下载进度条显示,用户名及密码输入等都可以使用对话框。对话框分为两种:

1. 对话框运行后,如果没有关闭该对话框就无法返回父窗口。

2. 对话框运行后,不需要关闭对话框就可以返回父窗口。

这两种对话框模式的选择的一句是对话框的结果和后面的操作有没有因果关系,如果对话框的结果和后面的操作没有因果关系,那么可以设置为第 2 种形式,如拷贝文件,下载进度显示一般就属于第 2 种对话框类型,该类型对话框又称为无模式对话框。

DialogBoxParam() 函数参数说明如下:

hInstance 是当前应用程序的实例句柄。

lpTemplateName 是对话框的资源模板。

hWndParent 是父窗口的句柄。

lpDialogFunc 是对话框的消息处理函数。

dwInitParam 是初始化参数,这里缺省设置为0。

比如像下面使用该函数:
DialogBoxParam (hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, MainDlg, NULL);

根据资源设定,显示对话框类似如:
[attach]200[/attach]
在上图的对话框中,对话框的样式由模板 IDD_MAINDLG 来设置。

在消息处理函数 MainDlg() 中,我们可以自定义要处理的消息(通常都使用 switch 结果处理),比如在 WM_INITDIALOG 消息里设置对话框图标,初始化 edit 控件等;在收到 WM_CLOSE 消息时关闭对话框;在收到 WM_COMMAND 消息时,我们又可以在其中查看细分的类型,比如若是 IDC_ABOUT 或 IDM_HELP_ABOUT 时那么就弹出“关于”对话框;若是 IDC_OK 时就使用 GetDlgItemText() 这样的函数获取用户的输入然后进行相应的授权检测等。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2