2008-08-12 25 views
5

我正在更新一些傳統C++代碼以使用Microsoft爲Visual Studio 2008發佈的「MFC功能包」。我們已經使用過從CFrameWndEx派生我們的應用程序的新類,並且正在應用Office 2007樣式以使我們的應用程序具有更現代的外觀。這給了我們梯度填充的窗口標題,狀態欄等,並使用功能區工具欄。找出在Office 2007中使用MFC功能包時正在使用的顏色

但是,我們的應用程序包含一些所有者繪製的控件,我想更新這些以匹配功能包使用的顏色方案。理想情況下,我想知道當前正在使用的淺色和陰影工具欄顏色。

我已經圍繞文檔和網絡尋找,還沒有找到任何東西。有誰知道如何找到這些信息?

[編輯]

特別是,我們需要找出哪些正在運行時使用的顏色。您可以使用新的靜態函數CMFCVisualManager :: SetDefaultManager在運行時更改應用程序的外觀。

下面的MSDN頁顯示您什麼樣的款式可供選擇,尤其是Office2007的樣子: link to msdn

回答

2

你有沒有在MFC源代碼,你會發現像

Ç看:\ Program Files文件\微軟的Visual Studio 9.0 \ VC \ atlmfc的\ src \ MFC

0

我想你可以使用你最喜歡的圖像編輯器,並從屏幕抓取顏色。

0

「我想你可以使用你最喜歡的圖像編輯器,並從屏幕抓取顏色。」

這實際上是我目前正在做的,我已經定義了一個常量的列表,我從中抽出顏色。雖然看起來不太優雅!

0

看起來CMFCVisualManager提供了多種獲取顏色信息的方法,例如,

CMFCVisualManager::GetSmartDockingBaseGuideColors() 
CMFCVisualManager::GetToolbarHighlightColor() 

查看CMFCVisualManager的MSDN文檔。

0

@GateKiller,OP沒有開發Office 2007加載項,所以UI準則不會真的有幫助。這是一個使用Visual C++ 2008 Feature Pack的MFC應用程序,它允許MFC應用程序採用Office 2007的外觀。

1

看起來像CMFCVisualManager提供了幾種獲取顏色信息的方法,例如,

CMFCVisualManager :: GetSmartDockingBaseGuideColors() CMFCVisualManager :: GetToolbarHighlightColor()

看看MSDN文檔的CMFCVisualManager。

很好的建議,但不幸的是,他們只是返回的灰色,當我目前運行我的風格的應用程序CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

煩人MSDN幫助是「正在建設中」,所以沒有按」各種色調甚至不會告訴你他們應該做什麼!

0

很好的建議,但不幸的是,他們只是返回的灰色,當我目前運行我的風格CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

CMFCVisualManagerOffice2007 :: GetTabFrameColors應用各種深淺 - 在CLRFACE輸出參數是灰色?

也許他們都是在每個主題的單一基本色調頂部的面具?假設您可以使用CMFCVisualManagerOffice2007 :: GetStyle()確定哪種配色方案有效,也許可以找出該色調是什麼,然後使用GetxxxColor()方法進行一些遮罩。

1

afxGlobalData包含有關MFC Feature Pack使用的當前顏色,畫筆和字體的一些有用信息。當我繪製自己的控制欄背景時,我特別使用afxGlobalData.m_clrBarFace

(請注意,我不在我的工作電腦前,因此上述語法不適用於此)。

相關問題