用sdk写基于对话框的win32应用程序时出现问题?
很多例子都是基于窗口的win32应用程序,
而我在写基于对话框的win32应用程序时,
出现程序运行后没有反映,
但是在系统的进程列表中却有。
下面是源代码:
#include "stdafx.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int iCmdShow)
{
static TCHAR szAppName[] = TEXT("ChangeDisp");
HWND hWnd; //?主窗口句柄
MSG msg;
WNDCLASS wndclass;
//填写窗口类结构,使得其参数描述主窗口各方面的属性
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, szAppName);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
return 0;
}
//下面这句话是基于对话框的--不好用
hWnd = CreateDialog(hInstance, szAppName, 0, NULL);
//下面这句话是基于窗口的--好用
/*
hWnd = CreateWindow (
szAppName, //窗口类名
TEXT ("ChangeDisp"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口的高和宽为缺省值
NULL, //父窗口的句柄
NULL, //窗口无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL); //不使用该值
*/
//如果创建窗口失败,则返回FALSE
if (!hWnd)
return (FALSE);
//让窗口显示出来;并更新其客户区;最后返回TRUE
ShowWindow (hWnd, iCmdShow);
UpdateWindow (hWnd);
while(GetMessage(&msg, NULL, 9, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
SetFocus(hWnd);
MessageBox(NULL, TEXT("Hello World!"), TEXT("Title!"), MB_ICONERROR);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}