问题:
项目需要对源MFC工程中的所有控件的外观进行自绘,在自绘组合框控件时,发现一个比较棘手的问题。组合框中编辑框在获取焦点时,文本会出现一个刺眼的白色边框,如下图。但是自绘函数并没有绘制该边框的代码,这个边框如何去掉呢?
解决:
由于我的自绘代码已经确定没有绘制这个边框,所以基本确定这是windows系统的杰作。所以考虑直接修改系统配色来隐藏这一个问题。。。无奈的折中的办法。
通过逐个实验windows系统的颜色定义
#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
#define CTLCOLOR_MAX 7
#define COLOR_SCROLLBAR 0
#define COLOR_BACKGROUND 1
#define COLOR_ACTIVECAPTION 2
#define COLOR_INACTIVECAPTION 3
#define COLOR_MENU 4
#define COLOR_WINDOW 5
#define COLOR_WINDOWFRAME 6
#define COLOR_MENUTEXT 7
#define COLOR_WINDOWTEXT 8
#define COLOR_CAPTIONTEXT 9
#define COLOR_ACTIVEBORDER 10
#define COLOR_INACTIVEBORDER 11
#define COLOR_APPWORKSPACE 12
#define COLOR_HIGHLIGHT 13
#define COLOR_HIGHLIGHTTEXT 14
#define COLOR_BTNFACE 15
#define COLOR_BTNSHADOW 16
#define COLOR_GRAYTEXT 17
#define COLOR_BTNTEXT 18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20
发现将COLOR_WINDOW 通过SetSysColors 修改为红色,该白色边框就变为了红色边框。
解决!
将该系统颜色改为背景色,实现边框的隐藏。只能做到这一步了,如果大牛们有其他好的解决办法,在不改变系统颜色的情况下解决,希望不吝赐教。