CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

为什么我的程序总是无限制的接收到WM_PAINT消息啊?感觉像是死循环似的

楼主JerKii(JERKII SHANG)2005-06-01 14:48:34 在 VC/MFC / 基础类 提问

我希望创建一个新类型的窗体来在界面上显示字符串(我没有使用STATIC控件),所以我注册了新的WNDCLASS,并创建了相应的窗体:  
   
  WNDCLASS   cls;  
  cls.cbClsExtra =   0;  
  cls.cbWndExtra =   0;  
  cls.hbrBackground =   (HBRUSH)   (COLOR_HIGHLIGHTTEXT   +   1);  
  cls.hCursor =   LoadCursor(NULL,   (LPCTSTR)   IDC_HAND);  
  cls.style =   CS_DBLCLKS   |   CS_HREDRAW   |   CS_VREDRAW; cls.hIcon =   NULL;  
  cls.hInstance =   m_hInstance;  
  cls.lpszMenuName =   NULL;  
  cls.lpszClassName =   "JKRichLable32";  
  cls.lpfnWndProc =   RichLableWndProc;  
   
  RegisterClass(&cls);  
   
  m_hWnd   =   CreateWindowEx(  
  WS_EX_TOPMOST,  
  "JKRichLable32",   "",    
  WS_VISIBLE   |   WS_CHILD,    
  m_rcWindow.left   -   pt0.x,   m_rcWindow.top   -   pt0.y,   m_W,   m_H,    
  m_hParent,   NULL,   m_hInstance,   NULL);  
  问题就处在下面的消息处理函数中:  
  LRESULT   __stdcall   RichLableWndProc(HWND   hwnd,   UINT   uMsg,   WPARAM   wParam,   LPARAM   lParam)  
  { switch   (uMsg)  
  {  
  case   WM_PAINT:  
  //   DefWindowProc(hwnd,   uMsg,   wParam,   lParam);  
  return   0;  
  }  
  return   DefWindowProc(hwnd,   uMsg,   wParam,   lParam);  
  }  
  如果我在WM_PAINT消息中直接返回0(或返回1),那么我的程序将无限制的重复接受到WM_PAINT消息.但是,如果我在该消息中调用了DefWindowProc函数,再返回0(或返回1),那么消息函数处理正常.  
   
  为什么我必须在消息处理函数中调用DefWindowProc啊?这好象优点不符合逻辑啊?通常是如果我们不处理消息的时候才会交给DefWindowProc去处理啊!!!但这里我明明只希望自己来处理该消息...... 问题点数:20、回复次数:3Top

1 楼jun_01(无名小卒)回复于 2005-06-01 15:20:11 得分 20

case   WM_PAINT:  
  BeginPaint();  
        ...Do   sth...  
  EndPaint();  
  break;  
   
  祝你好运!Top

2 楼JerKii(JERKII SHANG)回复于 2005-06-01 17:29:52 得分 0

多谢!Top

3 楼pipilupzj(皮皮鲁)回复于 2005-06-01 17:59:25 得分 0

恩,需要用beginpaint将无效区域有效化,否则windows一直认为你那个无效区域是无效的,自然一直会收到WM_PAINT了Top

相关问题

  • 在消息循环中,是不是用WM_PAINT 代替了WM_CREATE消息???
  • win2000下c编程,我只使用showwindow,为什么还会有WM_PAINT消息发送给消息循环?
  • 谁有MSSQLServer4 Kit For MSSQLServer 5.1.0 无限制版
  • 关于无限制商品分类。。。
  • 如何使Response.Write无限制写?
  • WM_PAINT消息
  • 求 InterBase的无限制用户的key(无内容)
  • 哪里可以获得无限制的weblogic.jdbc.mssqlserver4.Driver驱动程序
  • 请问哪里有VISIO2002无限制中文版下载?
  • 谁有xaudio的SDK,无限制版,100分相送。

关键词

  • ws
  • null
  • cls
  • umsg
  • paint
  • 无效
  • wparam
  • lparam
  • wm
  • hwnd

得分解答快速导航

  • 帖主:JerKii
  • jun_01

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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