2010-07-08 27 views

回答

1

有沒有簡單的方法在經典的VC/MFC應用程序要做到這一點,按鈕顏色總是系統定義。您必須使用自定義控件,或者創建一個所有者繪製按鈕。處理WM_CTLCOLOR並返回不同的畫筆不適用於按鈕。

編輯:

這是an example更換按鈕控制人已經建立了封裝所有者繪製代碼到一個類來解決這個問題。

1

可以使用CMFCButton。儘管你可以直接在你的資源文件中說一個按鈕是這種類型的,但我不推薦它,因爲它在rc文件上添加了一個不可維護的十六進制文本。如果你使用幾個rc文件,每種語言都有一個,那真是太噁心了!

讓我們走吧。在你的窗體類,聲明一個成員

CMFCButton m_button1; 

的DoDataExchange中應該是這樣的:

void MyDialog::DoDataExchange(CDataExchange* pDX) 
{ 
    __super::DoDataExchange(pDX); 

    DDX_Control(pDX, IDC_BUTTON1, m_button1); 

    // ... 
} 

那麼OnInitDialog中應該是這樣的:

BOOL CMyDialog::OnInitDialog() 
{ 
    if(!__super::OnInitDialog()) 
     return FALSE; 

    m_button1.SetFaceColor(RGB(0,0,255)); 
    m_button1.SetTextColor(RGB(0,255,0)); 
    m_button1.SetHotTextColor(RGB(255,0,0)); 

    return TRUE; 
} 

我貼將以此爲代碼藍色按鈕,帶有綠色文本,並且當光標懸停在按鈕上時,其文本將變爲紅色。

相關問題