久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

對話框控件背景,、字體顏色設(shè)置?(轉(zhuǎn))

 一場浩劫 2012-05-30

對話框控件背景,、字體顏色設(shè)置 (轉(zhuǎn))

(2011-03-07 20:27:31)
標(biāo)簽:

雜談

分類: MFC學(xué)習(xí)

對話框控件背景,、字體顏色設(shè)置 收藏
1,、控件背景顏色
每個(gè)控件和對話框本身在宣示之前會向其父對話框發(fā)送WM_CTLCOLOR消息,。如果你在派生類對話框?qū)M_CTLCOLOR消息進(jìn)行映射,就可以設(shè)定控件的顏色,,以及某些控件的背景顏色和字體的顏色,。

HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

       if((nCtlColor==CTLCOLOR_EDIT)&& pWnd->GetDlgCtrlID()==IDC_EDIT1)

      // 對ID號為IDC_EDIT1的EDIT控件屬性進(jìn)行設(shè)定

   {

         pDC->SetBkColor(RGB(255,0,255)); //設(shè)定文本的背景色

         pDC->SetTextColor(RGB(255,255,0));//設(shè)定文本顏色

         return m_hYellowBrush;// 設(shè)定控件的填充顏色

     }

if(nCtlColor==CTLCOLOR_STATIC)

//對所有的STATIC控件的屬性進(jìn)行設(shè)定

   {

          pDC->SetBkColor(RGB(0,0,0));

           pDC->SetTextColor(RGB(255, 255, 0));

          pDC->SetBkMode(TRANSPARENT);

         return m_hBlue;

   }

   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

   return hbr;

}

nCtlColor的其它對應(yīng)值:

CTLCOLOR_BTN(按鈕),CTLCOLOR_DLG(對話框),,CTLCOLOR_LISTBOX(列表框),,CTLCOLOR_MSGBOX(消息框),CTLCOLOR_SCROLLBAR(滾動條)。

2,、圖片作為背景并做透明處理

(1)對話框中增加成員變量或者全局變量如下:
          CBitmap m_bmDents;
          CBrush m_brDents;

(2)在OnInitDialog()中加入導(dǎo)入函數(shù):

        BOOL CMyDlg::OnInitDialog()

        { ……

            m_bmDents.DeleteObject();
m_brDents.DeleteObject();
m_bmDents.LoadBitmap(IDB_BITMAP1);     //導(dǎo)入背景圖片
              m_brDents.CreatePatternBrush(&m_bmDents);

       }

(3)在對話框增加OnCtlColor消息函數(shù)(在VC生成的函數(shù)修改如下,條件判斷中就是對各種控件的透明處理):

      HBRUSH CBitMapDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
      {
          if(nCtlColor == CTLCOLOR_DLG || nCtlColor == CTLCOLOR_BTN || nCtlColor ==                     CTLCOLOR_STATIC)
         {
             pDC->SetBkMode(TRANSPARENT);
 
             return m_brDents;
   }
         return(CDialog::OnCtlColor(pDC, pWnd, nCtlColor));
}

3,、設(shè)置對話框背景位圖

對于文檔視圖結(jié)構(gòu)和基于對話框的應(yīng)用程序都對應(yīng)著相應(yīng)的WINDOWS消息WM_ERASEBKGND,對該消息進(jìn)行映射就可以用于背景的修改

BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)

  

   CBitmap bitmap;

   CRect    client;

   CDC      dc;

     GetClientRect(&client);

     BITMAP   hb;

     bitmap.LoadBitmap(IDB_BITMAP1);//IDB_BITMAP1為資源中背景位圖資源的ID號

     dc.CreateCompatibleDC(pDC);

   dc.SelectObject(&bitmap);

     bitmap.GetObject(sizeof(hb),&hb);

     pDC->StretchBlt(0,0,client.right-client.left,client.bottom-client.top,&dc,

                            0,0,hb.bmWidth,hb.bmHeight,SRCCOPY);

   return TRUE;

}

4,、改變對話框背景顏色

最簡單的方法就是在OnPaint()中添加如下語句即可:
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect,RGB(0,255,0));

參考資料:

http://hi.baidu.com/leggle/blog/item/2c388c3edda5fc3b70cf6c87.html

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多