之前在项目中使用MFC的CDialog创建了一个对话框,然后贴上背景图,放上多个radiobutton和checkbox控件。为了使button背景透明,就在onCtlColor中返回NULL_BRUSH,透明的目的达到了,但是当对话框被遮盖后,点击控件时就会出现两个虚线框或者根本没有虚线框。
原因大概是对话框被遮盖后,刷新背景,但是控件因为返回空画刷,导致无法正确的刷新虚线框。
解决方法:从CButton集成一个类,不需要填写其他的方法,只需要在onEraseBkgnd函数中,判断控件所在的位置,然后把对话框的背景图对应的部分截取后作为控件的背景即可。这样就能正确的刷新虚线框,又不会印象界面效果。