Settings | Sign in | Sign up

There are currently 4 posts.

去除Tab控制項每個選項卡上的深色對話框背景的方法

Floor 1 巨大八爪鱼 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 巨大八爪鱼 7/10/24 22:10
Floor 3 巨大八爪鱼 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 巨大八爪鱼 12/3/24 22:37
【VC++中TabConrol控制項子窗體背景XP樣式完美解決方案 - CSDN App】http://t.csdnimg.cn/gLP7X

Content converter:

Reply the post
Content:
User: You are currently anonymous.
Captcha:
Unclear? Try another one.
©2010-2025 Purasbar Ver3.0 [Mobile] [Desktop]
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported license.