国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VC對話框背景顏色、控件顏色

2019-11-06 06:40:51
字體:
來源:轉載
供稿:網友

系統環境:Windows 7

方法一:重載OnPaint(),即WM_PAINT消息。有關代碼如下(以上例工程為準):    

[cpp] view plain copyvoid   CExampleDlgDlg::OnPaint()        {              if  (IsIconic())                 …              else             {                CRect   rect;                CPaintDC   dc(this);                GetClientRect(rect);                dc.FillSolidRect(rect,RGB(0,255,0));     //設置為綠色背景                CDialog::OnPaint();             }       }  

方法二:重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR消息。具體步驟如下(以上例工程為準):       ①在CExampleDlgDlg的頭文件中,添加一個CBrush的成員變量:     

[cpp] view plain copyclass   CExampleDlgDlg   :   public   CDialog      {...        PRotected:        CBrush   m_brush;          ...      };     ②在OnInitDialog()函數中添加如下代碼:     [cpp] view plain copyBOOL   CExampleDlgDlg::OnInitDialog()        {        ...        //   TODO:   Add   extra   initialization   here        m_brush.CreateSolidBrush(RGB(0,   255,   0));   //   生成一綠色刷子          ...      }     ③利用ClassWizard重載OnCtlColor(…),即WM_CTLCOLOR消息:     

[cpp] view plain copyHBRUSH   CExampleDlgDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)        {        /*       **   這里不必編寫任何代碼!       **下行代碼要注釋掉       **   HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);       */        return   m_brush;       //返加綠色刷子      }   

方法三還是重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR消息。具體步驟如下(以上例工程為準):       步驟①、②同上方法三中的步驟①、②。       步驟③利用ClassWizard重載OnCtlColor(…)(即WM_CTLCOLOR消息)時則有些不同:     

[cpp] view plain copyHBRUSH   CExampleDlgDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)        {        HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);        //在這加一條是否為對話框的判斷語句        if(nCtlColor   ==CTLCOLOR_DLG)        return   m_brush;       //返加綠色刷子        return   hbr;      }  

控件顏色:

對于分布在對話框上的控件,我們可以修改其顏色、其背景顏色,比如對靜態文本、文本編輯框、列表框等等。

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

[cpp] view plain copyHBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  {      HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);      if(nCtlColor   ==CTLCOLOR_DLG)      //對話框顏色        return   m_brush;       //返加綠色刷子        if(nCtlColor==CTLCOLOR_STATIC && pWnd->GetDlgCtrlID()==IDC_STATIC)  //靜態文本顏色,并且指定控件ID號      {           pDC->SetTextColor(RGB(255,0,0));           pDC->SetBkColor(RGB(191,219,255));     //靜態控件的背景顏色設置,這里設置于背景顏色一致,則可以免設置透明           //pDC->SetBkMode(TRANSPARENT);    //模式設置透明的話,則忽略靜態控件的背景顏色設置,與對話框顏色融合           hbr=(HBRUSH)m_brush;      }      if(nCtlColor==CTLCOLOR_EDIT)    //文本編輯框顏色      {          pDC->SetTextColor(RGB(0,0,255));           //pDC->SetBkColor(RGB(191,219,255));     //靜態控件的背景顏色設置          pDC->SetBkMode(TRANSPARENT);          hbr=(HBRUSH)m_brush;      }         return hbr;  }  

對于其中nCtlColor類型,即它的取值:

CTLCOLOR_DLG   對話框  CTLCOLOR_EDIT   編輯框  CTLCOLOR_LISTBOX   列表框    CTLCOLOR_MSGBOX   消息框  CTLCOLOR_SCROLLBAR   滑動條  CTLCOLOR_STATIC   靜態文本框、矩形等


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 思南县| 玉溪市| 时尚| 岢岚县| 桂阳县| 凌云县| 琼海市| 滦平县| 东城区| 永修县| 丰县| 新余市| 辉南县| 平原县| 通州市| 沿河| 左贡县| 宜州市| 华安县| 兰州市| 巴彦淖尔市| 永丰县| 赤城县| 中山市| 沧州市| 徐水县| 辉南县| 汝南县| 扶沟县| 年辖:市辖区| 贵阳市| 鄂州市| 肇州县| 青田县| 浦东新区| 栾城县| 化州市| 石河子市| 历史| 朝阳市| 盐山县|