#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WindowProc( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch ( uMsg )
{
case WM_CLOSE:
::PostQuitMessage(0);
break;
}
return ::DefDlgProc(hwnd, uMsg, wParam, lParam);//注意这里不是DefWindowProc
}
BOOL CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch ( uMsg )
{
case WM_COMMAND:
if ( LOWORD(wParam) == IDOK )
EndDialog(hwndDlg, 1);
break;
}
return FALSE;
}
int WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_VREDRAW | CS_HREDRAW;//可为赋值为0,但不能不赋值!
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = DLGWINDOWEXTRA;
wc.hInstance = hInstance;
wc.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = ::CreateSolidBrush(RGB(255,255,255));
wc.lpszMenuName = NULL;
wc.lpszClassName = "mydlgclass";
wc.hIconSm = NULL;
::RegisterClassEx(&wc);
//消息会依经过WindowProc与DialogProc
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}
rc文件:
IDD_DIALOG1 DIALOGEX 0, 0, 316, 186
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
CLASS "mydlgclass"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,205,165,50,14
PUSHBUTTON "Cancel",IDCANCEL,259,165,50,14
END