• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    改變對話框的背景色

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 36次 | 進入軟件測試論壇討論

    領測軟件測試網 黃基前(廣西桂林)

    ---- 筆者曾在《軟件報》2000年第5期中討論過如何改變控件的顏色,但還有
    相當一部分的讀者來信提問:一個基于對話框的MFC AppWizard應用程序中,如
    何改變對話框的背景顏色呢?對于這個問題,其實可以由幾種不同的方法來實
    現,具體如下(粗斜體代碼為增添的):

    ---- 方法一:調用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;
    }

    ---- 編譯并運行即可。
    ---- 關于如何改變對話框背景顏色的問題,可能還有很多種不同方法可以實現,
    筆者在這僅舉出四種常見的方法。其中方法三的編程似乎有點不太規范,方法四則
    要比方法三正統些,筆者這樣的對比舉例是為了拓寬VC編程愛好者特別是初學者的
    編程思路,讀者可以根據實際情況選用其中的一種。如果再結合《軟件報》2000年第
    5期中改變對話框上的控件顏色,相信會使您的MFC應用程序"增色"不少。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>