巨大八爪鱼
武林盟主 二十一级
|
Floor 1
Posted at: 7/10/24 21:04
一般情况下,我们是用不带边框的对话框来充当Tab Control的每个选项卡的内容的。
例如,主对话框IDD_TABBOX上有一个Tab Control,上面有两个选项卡,第一个选项卡用的是IDD_DIALOG1充当内容,第二个用的则是IDD_DIALOG2。IDD_DIALOG1和IDD_DIALOG2的Border属性设为None,Style属性设为Child。
但是用对话框充当选项卡内容会有烦人的深色对话框背景,和选项卡的样式并不搭,看起来也不好看。
其实,要去掉这个深色对话框背景很简单,只需要在每个选项卡的对话框的消息处理函数的WM_INITDIALOG里面加一句EnableThemeDialogTexture(hdlg, ETDT_ENABLETAB);就行了。有多少个选项卡,就加多少句这句话。
使用EnableThemeDialogTexture函数前,需要包含头文件Uxtheme.h和库文件Uxtheme.lib。该函数支持Windows XP系统。
#include <Uxtheme.h>
#pragma comment(lib, "Uxtheme.lib")
注意:使用这个函数后,如果程序处理了Static控件的WM_CTLCOLORSTATIC消息,直接return 0就可以用渐变背景了。不需要返回HBRUSH背景刷,SetTextColor设置的文字颜色就能生效。
|
巨大八爪鱼
武林盟主 二十一级
|
Floor 2
Posted at: 7/10/24 22:10
|
巨大八爪鱼
武林盟主 二十一级
|
Floor 3
Posted at: 10/21/24 20:51
【重要】使键盘上的Tab键能够正常让光标在Tab控件和子页面控件间切换的方法: (1)使用CreateDialog函数创建子页面时,第三个参数(父窗口)必须为main_dlg(tab控件所在的窗口),不能为tabctrl(tab控件本身)。 (2)Tab控件本身的Tabstop属性必须为True。 (3)各子页面(IDD_DIALOG1和IDD_DIALOG2)本身的Control Parent属性必须为True。 (4)切换选项卡(switch_tab)后,必须调用SetFocus(tabctrl)将当前光标切换到Tab控件上。
|
巨大八爪鱼
武林盟主 二十一级
|
Floor 4
Posted at: 12/3/24 22:37
【VC++中TabConrol控件子窗体背景XP样式完美解决方案 - CSDN App】 http://t.csdnimg.cn/gLP7X
|