VS2015-MFC 之 也谈 Button重绘

接手同事售后软件的工具开发项目,因为UI设计问题,稍接触了一下Button重绘。

项目第一个问题是debug模式会报断言错误,release模式是正常的。询同事得知,知道debug模式有问题,所以一只都在release模式下下断点……

一步步加断点,debug发现是在WM_DRAWITEM消息的实现部分OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct )出现断言错误。

看代码没发现特别的异常,但把所有按钮的【Owner Draw】属性改为false后就不会再出现断言错误。

同事按钮重绘部分是按如下链接方式实现: http://blog.csdn.net/fevershen/article/details/42103471

以上,发现Assertion原因如下:
因为要绘制的Button控件在以前进行过消息绑定,需要将所有需要重绘的button的所有在映射函数DoDataExchange()的消息绑定的语句注释掉(为避免遗漏,建议右键->查找所有引用的方式,对查找到的所有消息绑定进行注释): /
/DDX_Control(pDX, IDC_BUTTON_mini, button_mini); //DDX_Control(pDX, IDC_BUTTON_close, button_close);

按照以上方法修改后,成功解决!!

方法二(未验证): 自定义Button类的方案,参见: http://blog.sina.com.cn/s/blog_65cab32d01013uad.html

发布了57 篇原创文章 · 获赞 29 · 访问量 17万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章