一般情況下,我們是用不帶邊框的對話框來充當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設置的文字顏色就能生效。