对话框分为模态(modal)和非模态(modeless)两种,模态对话框不允许用户切换到同一程序的不同窗口,而非模态则行。
由于创建模态对话框既不需要注册窗口类,也不需要写消息循环,故用模态对话框来作为小程序的主窗口非常方便。
下面是使用模态对话框的一个模板:
#include "Resource.h"
#include <windows.h>
#include <tchar.h>
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
DialogBox( hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), NULL, About);
return 0;
}
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
关于对话框的回调函数的返回值说明:
返回TRUE表示消息由用户自己处理,
返回FALSE表示消息由系统的对话框管理器处理。