設置 | 登錄 | 註冊

作者共發了4篇帖子。

去除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

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。