2015-04-28 168 views
0

有沒有辦法改變CMFCBaseTabCtrl的線條和背景顏色?CMFCTabCtrl顏色自定義

我可以通過SetTabBkColor(...)SetAutoColors(...)更改標籤顏色,但控件的標題和線條保持灰色。

SetSysColors(...)不是一個選項,因爲它在全局範圍內改變整個OS的顏色。

基本上我們需要應用一些lite/dark顏色方案。我無法找到改變標籤控制背景和線條顏色的方法。當製表符背景色設置爲SetTabBkColor(...)時,它將離開製表符邊界附近的空間。

此外,其預計SetActiveTabColor(...)將改變活動選項卡的背景,但它沒有什麼。

而且無法更改活動選項卡的文本顏色。我相信這個東西是可定製的,但無法找到。

enter image description here

+0

你必須更具體。 CMFCBaseTabCtrl不包含任何繪圖代碼。你想改變什麼元素? – xMRi

+0

我需要將深色配色方案應用於整個東西。我已經添加了上面顯示所需內容的圖像。 – ChatCloud

+0

再次!這不是一個CMFCBaseTabCtrl這必須是從CMFCBaseTabCtrl派生的東西!它是什麼樣的選項卡Ctrl? CMFCBaseTabCtrl是一個純虛函數的基類...請細化你的問題! – xMRi

回答

1

顏色是從CMFCVisualManager的當前實例檢索。

使用CMFCVisualManager :: GetTabFrameColors。還有一些其他管理器功能,如OnEraseTabsFrame和OnEraseTabsArea。

因此,從你喜歡的那個派生出你自己的視覺管理者。覆蓋特定的功能,因此您可以更改顏色和行爲。

沒有其他辦法。只是樂成無效CMFCTabCtrl :: OnDraw中的源代碼(CDC * PDC)

C:\ Program Files文件(x86)的\微軟的Visual Studio 12.0 \ VC \ atlmfc的\ src \ MFC \ afxtabctrl.cpp

+0

派生出來的,我明白了。然而,這些顏色用於繪製線條而不是標籤的三維高光。實際選項卡由CMFCVisualManager :: OnDrawTab(...)繪製。所以我會需要阻止自己的經理,這個經理覆蓋了這四種方法。 – ChatCloud

+0

剛剛嘗試了一些解決方法,要修改afxGlobalData.clrBarHilite, afxGlobalData.clrBarShadow和afxGlobalData.clrBarDkShadow。它適用於行,但不適用於填充。所以沒有簡單的方法。 – ChatCloud