Win32程序下如何创建创建一个对话框
1个回答
展开全部
对话框
Win32程序下对话框分为模态和非模态两种。其中模态对话框显示后,其父窗口将不能操作。
消息框(例如Windows上常见的系统错误警告)为模态对话框的一种,功能较为简单。
创建显示对话框
通过调用以下函数显示模态对话框:
void DialogBoxW(
hInstance, //包含对话框模板的模块的句柄。如为NULL,则视为指定当前运行的可执行程序。
lpTemplate, //对话框模板名的字符串,或者对话框模板的标识ID。
hWndParent, //父窗口的句柄。
lpDialogFunc //对话框的消息处理回调函数的指针。
);
例如,在应用程序的菜单中点击“删除项目”时,显示模态对话框。该对话框包含三个控件:一个文本框(用于输入删除项目名),“确定”按钮,“取消”按钮。这些控件的标识ID分别为ID_ITEMNAME,IDOK,IDCANCEL。szItemName变量用于存储对话框中输入的删除项目名。
在应用程序主窗口的消息处理回调函数中,响应菜单点击事件,创建显示对话框:
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_DELETEITEM:
if (DialogBox(hinst,
MAKEINTRESOURCE(DLG_DELETEITEM),
hwnd,
(DLGPROC)DeleteItemProc)==IDOK)
{
// 对话框通过点击“确定”关闭
// 补全代码,实现删除项目操作
}
else
{
// 对话框通过点击“取消”关闭
}
break;
}
return 0L;
对话框的消息处理回调函数中,响应“确定”按钮点击事件,将文本框内容保存至szItemName变量后,关闭对话框;响应“取消”按钮点击事件,关闭对话框:
char szItemName[80]; // 用于存储对话框中输入的删除项目名
BOOL CALLBACK DeleteItemProc(HWND hwndDlg,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
if (!GetDlgItemText(hwndDlg, ID_ITEMNAME, szItemName, 80))
*szItemName=0;
// 注意此处没有break;
case IDCANCEL:
EndDialog(hwndDlg, wParam); // 关闭对话框
return TRUE;
}
}
return FALSE;
}
具体请仔细阅读MSDN帮助文档:网页链接
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询