作者共发了4篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
224 3
去除Tab控件每个选项卡上的深色对话框背景的方法
一派掌门 二十级
1楼 发表于:2024-7-10 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设置的文字颜色就能生效。
一派掌门 二十级
2楼 发表于:2024-7-10 22:10
 
一派掌门 二十级
3楼 发表于:2024-10-21 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控件上。
 
一派掌门 二十级
4楼 发表于:2024-12-3 22:37
【VC++中TabConrol控件子窗体背景XP样式完美解决方案 - CSDN App】http://t.csdnimg.cn/gLP7X
 

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:224 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2024-12-3 22:37
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。