VS2015-MFC 之 也谈 Button重绘

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

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

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

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

VS2015-MFC 之 也谈 Button重绘 同事按钮重绘部分是按如下链接方式实现: 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

来源:米斯特Zh

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月8日
下一篇 2018年1月8日

相关推荐