首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个程序错在哪里 为什么窗口一闪而过,该如何解决

2012-02-25 
这个程序错在哪里 为什么窗口一闪而过#defineWIN32_LEAN_AND_MEAN#includewindows.h#includewindowsx.h

这个程序错在哪里 为什么窗口一闪而过
#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) ;

热点排行