CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

为什么窗口会一闪而过?????(我是初学者)

楼主sharkillfish(Fishbaby)2001-12-30 21:13:36 在 C/C++ / C语言 提问

#   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

相关问题

  • 为什么我的运行结果的窗口会一闪而过
  • FlashWindow为什么一闪而过 ~
  • 为什么会一闪而过?
  • 我的Apache Tomcat 4.0.3为什么一运行startup.bat就一闪而过,启动不了?
  • 我用system()调用dos命令,为什么屏幕总会一闪而过,有不闪的方法吗
  • 为什么控制台程序一闪而过?
  • C++的问题.为什么程序一闪而过
  • 为什么打开access会一闪而过
  • 模拟器运行时为什么一闪而过,求助~~
  • FastReport的怪问题,为什么用ShowReport调用报表,是一闪而过,没有显示一个窗口让你按打印!

关键词

  • ws
  • null
  • cex11
  • wndclass
  • hinstance
  • createwindow
  • hwnds
  • overlappedwindow
  • child

得分解答快速导航

  • 帖主:sharkillfish
  • bighead

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo