設置 | 登錄 | 註冊

作者共發了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許可協議進行許可。