CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

vc技术内幕里面碰到的onpaint问题

楼主glchen57(谁与共)2006-03-02 22:52:12 在 VC/MFC / 界面 提问

《vc技术内幕(第四版)》的6.8节主题是“在对话框窗口内绘图”,讲述了在一个静态控件中绘制一个小黑方块:  
  void   CMyDialog::OnPaint()  
  {  
          CWnd*   pWnd   =   GetDlgItem(IDC_STATIC1);  
   
          CDC*   pControlDC   =   pWnd->GetDC();  
          pWnd->Invalidate();  
          pWnd->UpdateWindow();  
          pControlDC->SelectStockObject(BLACK_BRUSH);  
          pControlDC->Rectangle(0,   0,   10,   10);  
          pWnd->ReleaseDC(pControlDC);  
  }  
  我觉得不妥,试了一下,如果一直在那里循环调用,CPU占用100%。  
  查了相同问题的帖子,也没怎么搞清楚,有人说用beginpaint   endpaint能解决?好像也不行啊  
   
  谢谢!! 问题点数:20、回复次数:5Top

1 楼YufengShi(浪子)回复于 2006-03-03 00:10:19 得分 0

OnPaint函数里第一行加上  
  CPaintDC   dc(this);Top

2 楼glchen57(谁与共)回复于 2006-03-03 09:34:57 得分 0

楼上正解!  
  能否解释以下,为什么加上这行就没事了?只得到dc,也没用它?Top

3 楼doon(vecodo)回复于 2006-03-03 09:48:31 得分 0

删除  
          pWnd->Invalidate();  
          pWnd->UpdateWindow();  
  这两句  
  他们都引起了WM_PAINT消息Top

4 楼glchen57(谁与共)回复于 2006-03-03 10:04:45 得分 0

又有一个问题,如果小黑方块画在静态控件上,自然问题不大,但是如果我把方块画在按钮上,也就是上面的程序段中   CWnd*   pWnd   =   GetDlgItem(IDC_STATIC1);改成   CWnd*   pWnd   =   GetDlgItem(IDC_BUTTON1);,其中IDC_BUTTON1是窗口上的一个按钮,  
  这样的话,我一点击按钮,方块就不见了。YufengShi(浪子)的方法也失效了Top

5 楼sojoy131(小菜鸟要变大菜鸟)回复于 2006-03-03 10:42:01 得分 0

在按钮响应函数里面加上pWnd->Invalidate();可不可以?Top

相关问题

  • 《vc++技术内幕》
  • 关于《VC++技术内幕》
  • VC++6.0技术内幕
  • 关于《Vc++技术内幕》
  • 关于《vc技术内幕》
  • <<VC 技术内幕>> 的例子问题
  • 看过《VC++技术内幕》的请进。。。。。。
  • 求:《vc++技术内幕》的原代码。
  • 谁有VC++技术内幕(中文)
  • <<VC++技术内幕第五版>>如何?

关键词

  • idc
  • pwnd
  • pcontroldc
  • onpaint
  • 方块
  • 按钮
  • getdlgitem
  • cwnd
  • 问题
  • invalidate

得分解答快速导航

  • 帖主:glchen57

相关链接

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

广告也精彩

反馈

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