VC 對話方塊背景顏色、控制元件顏色

無幻發表於2020-04-04

系統環境:Windows 7
軟體環境:Visual C++ 2008 SP1
本次目的:為對話方塊設定背景顏色、控制元件顏色

      既然MFC對話方塊不好開發,那麼現在我們來開始美化我們的對話方塊。為對話方塊設定背景顏色、控制元件顏色等等。

 


對話方塊背景顏色:

 

網上流傳有四種方法(可能還不止),在VC++2008SP1測試後,發現只有三種可以使用了,其中第一種被廢棄了。以下是四種方法:

方法一 (失效):呼叫CWinApp類的成員函式SetDialogBkColor來實現。    
  其中函式的第一個引數指定了背景顏色,第二個引數指定了文字顏色。下面的例子是將應用程式對 話框設定為藍色背景和紅色文字,步驟如下:    
  ①   新建一個基於Dialog的MFC   AppWizard應用程式ExampleDlg。    
  ②   在CExampleDlgApp   ::InitInstance()中新增如下程式碼:    
 
 編譯並執行,此時對話方塊的背景色和文字色已發生了改變。值得注意的是:在呼叫DoModal()之前必須先呼叫SetDialogBkColor,且此方法是將改變應用程式中所有的對話方塊顏色,並不能針對某一個指定的對話方塊。    
方法二 :過載OnPaint(),即WM_PAINT訊息。有關程式碼如下(以上例工程為準):    

方法三 :過載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR訊息。具體步驟如下(以上例工程為準):    
  ①在CExampleDlgDlg的標頭檔案中,新增一個CBrush的成員變數:    
 
  ②在OnInitDialog()函式中新增如下程式碼:    
  
  ③利用ClassWizard過載OnCtlColor(…),即WM_CTLCOLOR訊息:    
 
方法四 :還是過載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR訊息。具體步驟如下(以上例工程為準):    
  步驟①、②同上方法三中的步驟①、②。    
  步驟③利用ClassWizard過載OnCtlColor(…)(即WM_CTLCOLOR訊息)時則有些不同:    
 

效果圖,在基於上一篇的點陣圖按鈕 ,看看是否與背景蠻和諧的:

 


控制元件顏色:

對於分佈在對話方塊上的控制元件,我們可以修改其顏色、其背景顏色,比如對靜態文字、文字編輯框、列表框等等。

步驟①、②同上方法三中的步驟①、②。
步驟③:利用ClassWizard過載OnCtlColor(…)(即WM_CTLCOLOR訊息)時則有些不同:

效果如下:

對於其中nCtlColor型別,即它的取值:

CTLCOLOR_DLG   對話方塊 
CTLCOLOR_EDIT   編輯框 
CTLCOLOR_LISTBOX   列表框   
CTLCOLOR_MSGBOX   訊息框 
CTLCOLOR_SCROLLBAR   滑動條 
CTLCOLOR_STATIC   靜態文字框、矩形等。

相關文章