读书人

这个程序错在哪里 为什么窗口一闪而过

发布时间: 2012-02-25 10:01:48 作者: rapoo

这个程序错在哪里 为什么窗口一闪而过
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <math.h>

#define WINDOW_CLASS_NAME_1 "WINCLASS1 "
#define WINDOW_CLASS_NAME_2 "WINCLASS2 "
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (msg)
{
case WM_CREATE:
{
return (0);
}break;
case WM_PAINT:
{
hdc=BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
return (0);
}break;
case WM_DESTROY:
{
PostQuitMessage(0);
return (0);
}break;
default:break;
}
return (DefWindowProc(hwnd, msg, wparam, lparam));
}

LRESULT CALLBACK WindowProc1(HWND hwnd1,
UINT msg1,
WPARAM wparam,
LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (msg1)
{
case WM_CREATE:
{
return (0);
}break;
case WM_PAINT:
{
hdc=BeginPaint(hwnd1, &ps);
EndPaint(hwnd1, &ps);
return (0);
}break;
case WM_DESTROY:
{
PostQuitMessage(0);
return (0);
}break;
default:break;
}
return (DefWindowProc(hwnd1, msg1, wparam, lparam));
}

int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;

winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground= (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME_1;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&winclass))
return (0);
if(!(hwnd = CreateWindowEx(NULL,
WINDOW_CLASS_NAME_1,
"YOUR BASIC WINDOW ",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0,
400, 400,
NULL,
NULL,
hinstance,
NULL)))
return (0);

WNDCLASSEX winclass1;
HWND hwnd1;
MSG msg1;

winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
winclass.lpfnWndProc = WindowProc1;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);


winclass.hbrBackground= (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME_2;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&winclass1))
return (0);
if(!(hwnd1 = CreateWindowEx(NULL,
WINDOW_CLASS_NAME_2,
"YOUR BASIC WINDOW ",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0,
400, 400,
NULL,
NULL,
hinstance,
NULL)))
return (0);
while (true)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if((msg.message==WM_QUIT)&&(msg1.message==WM_QUIT))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (msg.wParam);
}
这个程序错在哪里 为什么窗口一闪而过


[解决办法]
ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

这两句话跑哪里去了?我没有看到。。。
[解决办法]
很正常
你没写显示代码
就像上面的大哥那段代码你没写
if(!(hwnd1 = CreateWindowEx(NULL,
WINDOW_CLASS_NAME_2,
"YOUR BASIC WINDOW ",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0,
400, 400,
NULL,
NULL,
hinstance,
NULL)))
return (0);
后面写即可
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

读书人网 >C++

热点推荐