对话框:
1) 用户添加对话框资源("Insert"->Resource->Dialog->New)
1. 模态对话框(用户不能在对话框与同一个程序中的另一个窗口之间进行切换):
Eg:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd, About);
// IDD_ABOUTBOX是对话框资源的ID, About是对话框窗口过程的地址。
终止对话框:
EndDialog(hdlg,0);
2) 非模态对话框:
(用户能在对话框与同一个程序中的另一个窗口之间进行切换,同时该对话框还保持在Z轴上方,例如:windows自带的记事本的查找框):
HWND hdlgAbout ;//全局变量
//对话框窗口过程
BOOL CALLBACK AboutdialogFunc(
HWND hwndDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam
);
//在消息循环里要做处理
MSG msg;
hdlgAbout =CreateDialog(GetModuleHandle(0),MAKEINTRESOURCE(IDD_ABOUTBOX),NULL,(DLGPROC)AboutdialogFunc);
//显示更新对话框
//ShowWindow(hdlgAbout,SW_SHOW);
while(GetMessage(&msg,NULL,0,0))
{
if (!IsDialogMessage(hdlgAbout,&msg))//必须要加上
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//添加按钮响应
case IDM_ABOUT://按钮的ID:IDM_ABOUT
{
//创建非模态对话框
//创建对话框
if(!IsWindowVisible(hdlgAbout))
{
HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
hdlgAbout =CreateDialog(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hwnd,(DLGPROC)AboutdialogFunc);
//显示更新对话框
ShowWindow(hdlgAbout,SW_SHOW);
}
break;
}