VC編程中如何設置對話框的背景顏色和靜態文本顏色


晚上編一個小程序,涉及到如何設置對話框的背景顏色和靜態文本顏色。這在VC6.0中本來是一句話就搞定的事。在應用程序類中的InitInstance()函數添加:

    //設置對話框背景和文本顏色

SetDialogBkColor(RGB(160,180,220),RGB(0,0,0));

 

誰知這在VS 2005上竟不起作用,到網上一查,原來SetDialogBkColor函數在VS 2003中就已經不支持了。只得另辟蹊徑。另外的辦法就是響應WM_CTLCOLOR消息,在消息映射函數中添加:

 

[cpp]  view plain copy
  1. HBRUSH CFileSpltDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
  2. {  
  3.     HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);  
  4.     // TODO:  在此更改DC 的任何屬性  
  5.     // TODO:  如果默認的不是所需畫筆,則返回另一個畫筆  
  6.     // Determine if drawing a dialog box . If we are , return +handle to  
  7.     //our own background brush . Otherwise let windows //handle it .  
  8.       
  9.     switch(nCtlColor)  
  10.     {  
  11.     case CTLCOLOR_STATIC: //對所有靜態文本控件的設置  
  12.         {  
  13.             //設置背景為透明  
  14.             pDC->SetBkMode(TRANSPARENT);   
  15.             pDC->SetTextColor(RGB(0,0,0)); //設置字體顏色  
  16.             break;  
  17.         }  
  18.     case CTLCOLOR_DLG:  
  19.         {  
  20.     return (HBRUSH) m_brush .GetSafeHandle();   
  21.         break;  
  22.         }  
  23.     default:  
  24.         break;  
  25.     }  
  26.     return hbr;  
  27. }  

 


    照這樣,除了靜態文本可以控制,還有按鈕、文本編輯框可以控制其背景顏色,

因為我看到有下列的宏:


[cpp]  view plain copy
  1. #define CTLCOLOR_MSGBOX         0  
  2. #define CTLCOLOR_EDIT           1  
  3. #define CTLCOLOR_LISTBOX        2  
  4. #define CTLCOLOR_BTN            3  
  5. #define CTLCOLOR_DLG            4  
  6. #define CTLCOLOR_SCROLLBAR      5  
  7. #define CTLCOLOR_STATIC         6  
  8. #define CTLCOLOR_MAX            7  

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM