为什么窗口会一闪而过?????(我是初学者)
# include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HWND hwnds[7];
char cText[50];
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
MSG msg;
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName ="CEx11_1";
if(!RegisterClass(&wndclass)) return FALSE;
hwnds[0]=CreateWindow("CEx11_1",NULL,WS_OVERLAPPEDWINDOW,0,0,300,200,NULL,NULL,hInstance,NULL);
hwnds[1]=CreateWindow("CEx11_1",NULL,WS_OVERLAPPEDWINDOW,10,40,300,200,hwnds[0],NULL,hInstance,NULL);
hwnds[2]=CreateWindow("CEx11_1",NULL,WS_OVERLAPPEDWINDOW|WS_CHILD,10,20,300,200,hwnds[1],NULL,hInstance,NULL);
hwnds[3]=CreateWindow("CEx11_1",NULL,WS_OVERLAPPEDWINDOW|WS_CHILD,10,20,300,200,hwnds[2],NULL,hInstance,NULL);
hwnds[4]=CreateWindow("CEx11_1",NULL,WS_POPUPWINDOW|WS_CAPTION,56,170,300,200,hwnds[1],NULL,hInstance,NULL);
hwnds[5]=CreateWindow("CEx11_1",NULL,WS_POPUPWINDOW|WS_CAPTION,70,210,300,200,hwnds[3],NULL,hInstance,NULL);
hwnds[6]=CreateWindow("CEx11_1",NULL,WS_OVERLAPPEDWINDOW|WS_CHILD,10,20,300,200,hwnds[5],NULL,hInstance,NULL);
for(int i=0;i<7;i++)
{
wsprintf(cText,"hwnds[%d]=%d",i,hwnds[i]);
SetWindowText(hwnds[i],cText);
ShowWindow(hwnds[i],SW_SHOWNORMAL);
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);
wsprintf(cText,"Parent=%d,Child=%d,Owner=%d",GetParent(hwnd),GetWindow(hwnd,GW_CHILD),GetWindow(hwnd,GW_OWNER));
TextOut(hdc,0,0,cText,strlen(cText));
EndPaint(hwnd,&ps);
case WM_DESTROY:
if(hwnd==hwnds[0])
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
问题点数:20、回复次数:3Top
1 楼bighead(bighead1997)回复于 2001-12-30 21:20:33 得分 20
case WM_PAINT:
HDC hdc;
...............
EndPaint(hwnd,&ps);
//--- 鸟人,这儿少了一个break; 低级错误
case WM_DESTROY:
..............Top
2 楼wangzn1979(梦郎2003)回复于 2001-12-30 21:25:02 得分 0
楼上的回答真精彩
case语句怎么会没有break呢?Top
3 楼sharkillfish(Fishbaby)回复于 2001-12-30 21:26:59 得分 0
我尻,大哥你好厉害。原来我的书上也少了一个break;我看了一下,我书上的这些窗口函数,每个case结束都没有break;那不是都做下去拉。。。。。。。Top




