改變對話方塊背景顏色

來源:互聯網
上載者:User

----
方法一:調用
CWinApp
類的成員函數
SetDialogBkColor
來實現。

----
其中函數的第一個參數指定了背景顏色,第二個參數指定了文本顏色。下面的例子是將應用程式對話方塊設定為藍色背景和紅色文本,步驟如下:

----

建立一個基於
Dialog

MFC AppWizard
應用程式
ExampleDlg

----


CExampleDlgApp ::InitInstance()
中添加如下代碼:

BOOL CExampleDlgApp: : InitInstance ( )
{

    CExampleDlgDlg dlg;
    m_pMainWnd = &dlg;

//
先於
DoModal()
調用,將對話方塊設定為藍色背景、紅色文本

    SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
    int nResponse = dlg.DoModal();

}

----
編譯並運行,此時對話方塊的背景色和文本色已發生了改變。值得注意的是:在調用
DoModal()
之前必須先調用
SetDialogBkColor
,且此方法是將改變應用程式中所有的對話方塊顏色,並不能針對某一個指定的對話方塊。

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

void 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
的成員變數:

class CExampleDlgDlg : public CDialog
{
...
protected:
CBrush m_brush;
...
};

----


OnInitDialog()
函數中添加如下代碼:

BOOL CExampleDlgDlg::OnInitDialog()
{
...
// TODO: Add extra initialization here
m_brush.CreateSolidBrush(RGB(0, 255, 0)); //
產生一綠色刷子

...
}

----

利用
ClassWizard
重載
OnCtlColor(…)
,即
WM_CTLCOLOR
訊息:

HBRUSH 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
訊息)時則有些不同:

HBRUSH CExampleDlgDlg::OnCtlColor
(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

//
在這加一條是否為對話方塊的判斷語句

if(nCtlColor ==CTLCOLOR_DLG)
return m_brush;  //
返加綠色刷子

return hbr;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.