2009-09-23 26 views
4

我似乎無法得到CMFCButton在對話框應用程序中以Vista風格顯示。我正在使用VS2008和MFC功能包。與Vista風格的CMFCButton

這裏有一些步驟來重現我的問題:

  • 創建一個新的MFC項目;
  • 指定基於對話框的項目。
  • 將兩個按鈕添加到主對話框。
  • 爲每個按鈕添加一個變量。使其中一個變量爲CButton,另一個爲CMFCButton。
  • 編譯並運行。

test app picture http://img7.imageshack.us/img7/3/testapp.png

正如你所看到的,CButton的具有正確的風格,但在CMFCButton沒有。

我在這裏失蹤了什麼?

回答

7

CMFCButtonBS_OWNERDRAW風格默認設置 - 你可以爲你的對話框中刪除它在OnInitDialog()

mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0); 

但是,移除所有者繪製風格導致許多CMFCButton的方法正在變得毫無用處(例如SetTextColor)。你可以得到按鈕通過建立可視化管理使用當前的Windows主題呈現:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); 

這上面,而不是ModifyStyle的完成,導致符合預設樣式按鈕,但仍然有較新的渲染功能。

+0

謝謝,解決了這個問題。但是,這是否意味着我將無法訪問CMFCButton特定功能,如更改文本顏色? – djeidot 2009-09-23 13:19:02

+0

好點 - 原來有另一種方式,答案更新的細節。 – 2009-09-23 22:07:45

+0

就是這樣,謝謝。 – djeidot 2009-09-24 13:36:38