程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC中如何改變對話框中控件的顏色

VC中如何改變對話框中控件的顏色

編輯:vc教程

  問題:在VC中,當我們大量的運用控件時,往往會為改變控件的顏色所煩惱。因為VC不象VB那樣,可以方便地改變對話框及各個控件的顏色,要改變一個控件的顏色比較煩瑣。那麼,VC中怎樣改變控件的顏色。

  思路:在控件顯示之前,每一個控件會向父對話框發送一個WM_CTLCOLOR消息,這個消息缺省處理函數CWnd::OnCtlColor返回一個HBRUSH類型的句柄,這樣,就可以設置前景和背景文本顏色,並為控件或者對話框的非文本區域選定一個刷子。

  實現:

  ① 先創建一個基於對話框的工程,命名為test,然後在對話框上加入一個ListBox控件。

  ② 在testDlg.h中加入一個成員變量:HBRUSH m_hbrush;

  ③ 在OnInitDialog()中,加入m_hbrush=CreateSolidBrush(RGB(0,0,0);此處設置的RGB值可以改變ListBox的背景色。為了觀看ListBox中字的顏色變化,我們給ListBox加入幾個字:利用Class Wizard給ListBox加入一個Control類型的成員變量m_ctrlListBox,然後在OnInitDialog()加入如下所示的代碼:

m_ctrlListBox.AddString("第一行");
m_ctrlListBox.AddString("第二行");

  ④ 點擊Class Wizard,給testDlg加入WM_CTLCOLOR事件,單擊Edit Code按鈕,然後把改函數的內容替換為如下代碼:

if(nCtlColor== CTLCOLOR_LISTBOX)
{
pDC->SetBkMode(TRANSPARENT);
//此處設置字體的顏色
pDC->SetTextColor(RGB(255,255,255));

return m_hbrush;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

  現在編譯並運行改程序,可以看到列表框已經變成黑色而其中的字已經變為白色了!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved