vc 初学者 十万火急 无法创建窗口

来源:百度知道 编辑:UC知道 时间:2024/05/06 04:26:12
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd )
{
WNDCLASS wonclass;
wonclass.cbClsExtra=0;
wonclass.cbWndExtra=0;
wonclass.hbrBackground=(HBRUSH)GetStockObject(DKGRAY_BRUSH);
wonclass.hCursor=LoadCursor(NULL,IDC_CROSS);
wonclass.hIcon=LoadIcon(NULL,IDI_ERROR);
wonclass.hInstance=hInstance;
wonclass.lpfnWndProc=winsunproc;
wonclass.lpszClassName="magic";
wonclass.lpszMenuName=NULL;
wonclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wonclass);
HWND hwnd;
hwnd=::CreateWindow("magic","china",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
编译没有任何问题。
无法看到窗口,任务管理器显示,程序正在运行,调试发现,hwnd的值为null,这是什么情况啊,应该没出错啊。

没有消息循环啊,窗口创建完之后就退出了,所以看不到!

在你上面代码的最后加上:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, NULL, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

("magic","china",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
上面有问题,你把CW_USEDEFAULT随便改个矩形区域范围试一下。如
("magic","china",WS_OVERLAPPEDWINDOW,0,0,
300,400,NULL,NULL,hInstance,NULL);

Winsunproc,不错
这条路绝对不好走,朋友.