关于控件重载WM_PAINT消息

 控件重载WM_PAINT消息。

在WM_PAINT的重载中这样写道:Do not call CEdit::OnPaint() for painting messages

 //CPaintDC dc(this); // device context for painting
 // TODO: Add your message handler code here
 // Do not call CEdit::OnPaint() for painting messages
 CEdit::OnPaint();

如果按照MFC的建议,你必须自己实现Paint,而不能调用父控件。

如果你什么都不做,你会发现,数据无法更新。比如在OnPaint()中只有 CPaintDC dc(this);

如果在函数成为空函数(无语句),则可能程序死循环(原因不知。)

一般情况下,你必须使用父控件的OnPaint实现基础绘画,然后才加入你的绘画代码。

注意,绘画不要使用CPaintDC dc(this); 这句语句好像会造成父控件的OnPaint()失效。(原因不知)

相反的,你应该使用GetDC() 来获取设备指针。

如需要源代码,请发邮件给我。动态库中提供获取作者的Email接口函数 public: //功能:获取作者邮箱 //输入:无 //输出:无 //返回:作者信息 CString GetAutherEmail(); //功能:判断输入的节点句柄是否存在 //参数:[in] hItem 节点句柄 //返回:true节点存在,false节点不存在 bool FindItemExist(HTREEITEM hItem); //功能:设置一个节点字体颜色 //参数:[in] hItem 节点句柄 // [in] clrText 节点字体颜色 //返回:true设置字体颜色成功,false设置字体颜色失败 //注:内部不包含刷新 bool SetItemTextColor(HTREEITEM hItem, COLORREF clrText); //功能:获取一个节点字体颜色 //参数:[in] hItem 节点句柄 // [out] clrText 节点字体颜色 //返回:true获取字体颜色成功,false获取字体颜色失败 //注:内部不包含刷新 bool GetItemTextColor(HTREEITEM hItem, COLORREF &clrText;); //功能:设置扩展按钮的边框颜色 //参数:[in] clrButtonBorder 扩展按钮的边框颜色 //返回:无 //注:内部包含刷新 void SetExpandedButtonBorder(COLORREF clrButtonBorder); //功能:设置扩展按钮的十字颜色 //参数:[in] clrButtonCross 扩展按钮的十字颜色 //返回:无 //注:内部包含刷新 void SetExpandedButtonCross(COLORREF clrButtonCross); //功能:刷新背景 //输入:无 //输出:无 void RedrawTreeCtrl(); //功能:设置画线的样式 //输入:[in] nPenStyle 画线样式 // [in] nWidth 画线宽度 // [in] crColor 画线颜色 //返回:无 //注:内部包含刷新 void SetPenLineStyle(int nPenStyle, int nWidth, COLORREF crColor); protected: //功能:判断输入的节点句柄是否存在 //参数:[in] hItem 节点句柄 //返回:true节点存在,false节点不存在 bool FindChildItemExist(HTREEITEM hParantItem, HTREEITEM hItem); //功能:绘制文字 //参数:[in] pDC 设备DC //返回:无 void OnDrawText(CDC *pDC); //功能:绘制一个节点文字 //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemText(CDC *pDC, HTREEITEM hItem); //功能:绘制展开按钮 //参数:[in] pDC 设备DC //返回:无 void OnDrawButton(CDC *pDC); //功能:绘制一个节点展开按钮 //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButton(CDC *pDC, HTREEITEM hItem); //功能:绘制一个节点展开按钮(节点展开) //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButtonExpanded(CDC *pDC, HTREEITEM hItem); //功能:绘制一个节点展开按钮(节点未展开) //参数:[in] pDC 设备DC // [in] hItem 节点句柄 //返回:true成功,false失败 bool OnDrawItemButtonNotExpanded(CDC *pDC, HTREEITEM hItem); //功能:绘制节点连接线 //参数:[in] pDC 设备DC //返回:无 void OnDrawLines(CDC *pDC); //功能:绘制根节点连接线 //参数:[in] pDC 设备DC //返回:无 void OnDrawItemLines(CDC *pDC, HTREEITEM hItem); private: //功能:获取画线的区域(排除扩展按钮的区域) //参数:无 //返回:创建的画线的区域 void CreateRgnForDrawLines(CRgn &rgnDraw;);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值