前一段时间一直在看Charles Pezold的那本《Windows程序设计》,感觉还是有点难度,有些地方没有下细看,粗略的看了几眼。发现里面的每一个程序都会首先生成一个窗口,我一直想做那种对话框,当看到对话框那一章时发现还是有那么一个窗口碍事,没有一个纯净的对话框。研究了那一章好久,终于搞懂Win32是如何建立一个对话框的了,这里给大家提供一个Win32对话框最简单的实例(程序太简单没有写注释):
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK DialogProc(HWND ,UINT,WPARAM,LPARAM) ;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MSG msg;
HWND hwnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DialogProc);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
{
if( !IsDialogMessage( hwnd, &msg ) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
LRESULT CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
SetWindowPos(hWnd,NULL,500,200,0,0,SWP_NOSIZE);
return TRUE;
case WM_COMMAND:
if(LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
PostQuitMessage(0);
return TRUE;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return FALSE;
}