CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

MFC中如何自己绘制某个窗口的边框?

楼主savages(也人)2006-03-12 17:37:37 在 VC/MFC / 界面 提问

响应WM_NCPAINT消息发现一点作用都没有,下面是我的代码,百思不得其解,错在哪里?  
  望高手们赐教,谢谢  
  void   CMyWindow::OnNcPaint()  
  {  
  //   TODO:   Add   your   message   handler   code   here  
  //   Do   not   call   CWnd::OnNcPaint()   for   painting   messages  
  CWindowDC   dc(this);  
  CRect   rcWin;  
                    CPen   pen,   *pOldPen;  
  CBrush   *pOldBrush;  
   
  GetWindowRect(&rcWin);  
  ScreenToClient(&rcWin);  
                    pen.CreatePen(PS_SOLID,   1,   CR_BORDER_MINE);  
  pOldPen   =   dc.SelectObject(&pen);          
  pOldBrush   =   (CBrush   *)dc.SelectStockObject(NULL_BRUSH);  
  dc.Rectangle(&rcWin);  
  dc.SelectObject(pOldPen);  
  dc.SelectObject(pOldBrush);  
   
  } 问题点数:30、回复次数:9Top

1 楼savages(也人)回复于 2006-03-13 09:42:36 得分 0

自己顶一下Top

2 楼savages(也人)回复于 2006-03-15 09:27:23 得分 0

再顶Top

3 楼liutaoxwl(寒桑子)回复于 2006-03-15 10:02:23 得分 9

记得当初做这个的时候响应了下面几个消息  
  WM_NCPAINT  
  WM_NCACTIVATE  
  WM_NCCALCSIZE  
  WM_SIZETop

4 楼wenkui(黒眼看红尘)回复于 2006-03-15 16:50:07 得分 2

被盖住了吧  
  试试比原来的rect大一点Top

5 楼liutaoxwl(寒桑子)回复于 2006-03-16 09:11:27 得分 8

大小通过WM_NCCALCSIZE算Top

6 楼xx_jj()回复于 2006-03-16 09:39:13 得分 3

在onpaint里面试试Top

7 楼savages(也人)回复于 2006-03-16 17:45:43 得分 0

搞定了.多谢大家热心帮助.其实错误还是在OnNcPaint()里面,在我的程序里面不需要响应WM_NCCALCSIZE,因为我设置了WS_BORDER属性,windows替我计算了NC区域了.  
   
  我把其中的rcWin的每个坐标都加1就可以达到我的目标了。  
  但是为什么需要这样还是不太明白,如果对于一个无边框的窗口,在OnPaint()函数中不需要加1也能画出矩形的。  
   
  只有在需要定制NC的位置与windows默认NC区域位置不一样的时候才需要响应WM_NCCALCSIZE消息。Top

8 楼lamputa_lito(lamputa)回复于 2006-03-16 19:09:10 得分 8

GetWindowRect(&rcWin);  
  ScreenToClient(&rcWin);  
  =================================  
  调用后rcWin.left   和rcWin.top都会<0,所以出错.至于为什么小于0,自己想想吧Top

9 楼savages(也人)回复于 2006-03-17 10:38:43 得分 0

明白了,多谢,当初怎么没想到呢,sighTop

相关问题

  • 窗口边框如何绘制
  • 无边框窗体(自绘窗体)的边框绘制问题????
  • 工具栏问题:如何实现当鼠标移到工具栏某个按钮上时该按钮不绘制边框?
  • ■■■用css绘制细边框表格,怎么画出来的框这么粗阿■■■
  • 一个MFC绘制图形的问题
  • 如何直接在屏幕桌面上绘制移动的三角形?粗边框的,类似拖动Win98的窗口时的那种粗虚线边框。
  • 在MFC中,如何创建一个没有边框的窗口
  • 如何在一个给定的矩形内绘制 圆、弧、矩形等图形?要求绘制的线等遇到给定矩形边框时裁剪调。
  • 100分求助!如何去掉MFC做出来的窗口的边框!
  • 边框问题

关键词

  • dc
  • 消息
  • rcwin
  • onncpaint
  • nccalcsize
  • poldbrush
  • poldpen
  • 响应
  • selectobject
  • pen

得分解答快速导航

  • 帖主:savages
  • liutaoxwl
  • wenkui
  • liutaoxwl
  • xx_jj
  • lamputa_lito

相关链接

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

广告也精彩

反馈

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