<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    VS2008SP1中CDialogEx的使用問題及解決

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    系統環境:Windows 7
    軟件環境:Visual Studio 2008 SP1
    本次目的:建立一個CDialogEx的對話框

          我們知道在VS2008SP1引進了BCG第三方控件,可以使MFC界面編程容易些,但是關于這方面的資料并不多。可能是我使用的系統因素,在建立對話框時,選擇“生成的類”基于CDialogEx后,發現代碼并沒有把創建的對話框派生CDialogEx ,而還是派生自CDialog。所以我們只能手動改之。對于一個新建立的對話框,這里我建立的名字為Test 工程,我們開始進行以下步驟:
    1. 在TestDlg.h 中,修改以下地方:

    class CTestDlg : public CDialogEx    //原本為CDialog
    {····};

    2. 在TestDlg.cpp 中,修改以下地方:

    CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
        : CDialogEx (CTestDlg::IDD, pParent)       //原本為CDialog(CTestDlg::IDD, pParent)
    {
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CTestDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx ::DoDataExchange(pDX);    //原本為CDialog::DoDataExchange(pDX); 
    }

    BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx )         //原本為BEGIN_MESSAGE_MAP(CTestDlg, CDialog)    
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    BOOL CTestDlg::OnInitDialog()
    {
        CDialogEx ::OnInitDialog();         //原本為CDialog::OnInitDialog()
         ····
    }

    void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
        ·······
        else
        {
            CDialogEx ::OnSysCommand(nID, lParam);       //原本為CDialog::OnSysCommand(nID, lParam);
        }
    }

    void CTestDlg::OnPaint()
    {
       ········
        else
        {
            CDialogEx ::OnPaint();        //原本為CDialog:::OnPaint();
        }
    }

    3.一共修改七個地方,現在編譯運行,就可以正常使用了。

    在MSDN中,CDialogEx 有兩個比較經常用到的方法,SetBackgroundColor SetBackgroundImage ,分別是設置背景顏色和背景圖片。一個函數就可以搞定背景顏色了,就不必像上次 我寫的那么麻煩了。例如,背景顏色,只要在對話框初始化函數OnInitDialog() 中添加以下代碼就行了:

    SetBackgroundColor(RGB(255,0,255));

    效果如下:

    RFID設備管理軟件

    對于背景圖片SetBackgroundImage 的設置,MSDN上定義的是:

    void SetBackgroundImage(
       HBITMAP hBitmap,
       BackgroundLocation location=BACKGR_TILE,
       BOOL bAutoDestroy=TRUE,
       BOOL bRepaint=TRUE 
    );
    BOOL SetBackgroundImage(
       UINT uiBmpResId,
       BackgroundLocation location=BACKGR_TILE,
       BOOL bRepaint=TRUE 
    );

    有兩種方法可以設置,這里舉例第二種。導入一張Bmp位圖資源,假設其ID號為IDB_BITMAP1 ,如果我們要讓圖片鋪滿(TILE )窗口,即直接使用以下代碼:

    SetBackgroundImage(IDB_BITMAP1);

    對于第二個參數,風格有 BACKGR_TILE, BACKGR_TOPLEFT, BACKGR_TOPRIGHT, BACKGR_BOTTOMLEFT, 和 BACKGR_BOTTOMRIGHT。可以設置圖片的位置,但是卻沒有拉伸和居中功能,我們只能自己重載,或者使用別人已經實現的類(http://www.codeproject.com/KB/dialog/bmpdlg01.aspx )

    默認風格如下:

    RFID設備管理軟件

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全