• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 29,comments - 10,trackbacks - 0


            1、把MFC類與控件關聯起來
            1)使用GetDlgItem函數
               CWnd* CWnd::GetDlgItem(int nID) const;
               void* CWnd::GetDlgItem(int nID,HWND* phWnd) const;

            void CDialogDlg::OnGetdlgitem() 
            {
                CComboBox
            * pCbo=(CComboBox*)GetDlgItem(IDC_COMBO1);
                
            //獲取某個空間的指針
                ASSERT(pCbo);
                
            if(pCbo)
                {
                    pCbo
            ->AddString("GetDlgItem-1");
                    pCbo
            ->SetCurSel(0);
                }
            }
            2)通過Attach函數為控件定義子類
               使用此函數要注意在添加代碼以去掉關聯
            void CDialogDlg::OnUsingattach() 
            {
                
            if(NULL==m_combo2.GetSafeHwnd())
                    
            //檢查控件有沒關聯到子類
                {
                    HWND hwnd;
                    GetDlgItem(IDC_COMBO2,
            &hwnd);
                    
            if(hwnd)
                    {
                        m_combo2.Attach(hwnd);
                        m_combo2.AddString(
            "Using Attach-1");
                        m_combo2.AddString(
            "Using Attach-2");
                        m_combo2.SetCurSel(
            0);
                    }
                }
            }

            void CDialogDlg::OnDestroy() 
            {
                CDialog::OnDestroy();

                m_combo2.Detach();
            }
            3)使用對話框模板控件的DDX
               添加完控件后,單擊新添加的組合框,選擇Add Member Variable菜單項。選中Member Variables,單擊Add Variables,將Variable type設為CComboBox,在Variable name框中輸入“m_combo3”
            void CDialogDlg::OnButton2() 
            {
                m_combo3.AddString(
            "Using DDX");
                m_combo3.SetCurSel(
            0);
            }
            4)動態創建控件
               添加一個變量:CComBox m_combo4
            void CDialogDlg::OnButton3() 
            {
                
            if(NULL==m_combo4.GetSafeHwnd())
                {
                    CComboBox
            * pExistingCombo=(CComboBox*)GetDlgItem(IDC_COMBO2);
                    CWnd
            * pUsingDynamic=GetDlgItem(IDC_BUTTON3);
                    ASSERT(pExistingCombo
            &&pUsingDynamic);
                    
            if(pExistingCombo&&pUsingDynamic)
                    {
                        CRect rectCombo,rectDropdown;
                        pExistingCombo
            ->GetWindowRect(rectCombo);
                        ScreenToClient(rectCombo);

                        CRect rectButton;
                        pUsingDynamic
            ->GetWindowRect(rectButton);
                        ScreenToClient(rectButton);

                        rectCombo.right
            =rectButton.left+rectCombo.Width();
                        rectCombo.left
            =rectButton.left;

                        pExistingCombo
            ->ShowDropDown();
                        pExistingCombo
            ->GetDroppedControlRect(rectDropdown);
                        
            //得到已存在組合框的下拉長度
                        pExistingCombo->ShowDropDown(FALSE);
                        ScreenToClient(rectDropdown);
                        rectCombo.bottom
            +=rectDropdown.Height();

                        DWORD dwStyle
            =pExistingCombo->GetStyle();
                        m_combo4.Create(dwStyle,rectCombo,
            this,1222);

                        m_combo4.AddString(
            "Dynamic-1");
                        m_combo4.AddString(
            "Dynamic-2");
                        m_combo4.SetCurSel(
            0);
                        m_combo4.SetFocus();
                    }
                }
            }
            2、位圖按鈕
            1)使用CBitmapButton類
               在項目中添加一個CBitmapButton類的子類(稱為CMyFancyButton),并在按鈕屬性的樣式中把Owner Draw屬性設為TRUE。
            BOOL CDialogDlg::OnInitDialog()
            {
                    
                m_fancyButton.LoadBitmaps(IDB_UP,IDB_DOWN,IDB_FOCUSED,IDB_DISABLED);
                
            //分別設置圖像的四個狀態
                m_fancyButton.SizeToContent();//自動將按鈕的大小設置為位圖的大小
                     
            }
            2)使用BS_BITMAP風格
               在按鈕屬性的樣式中把Bitmap屬性設為TRUE。
            BOOL CDialogDlg::OnInitDialog()
            {

                CButton
            * pBSBitmap=(CButton*)GetDlgItem(IDC_BUTTON4);
                ASSERT(pBSBitmap);
                
            if(pBSBitmap)
                {
                    VERIFY(m_bmpBSBitmap.LoadBitmap(IDB_UP));
                    HBITMAP hbmp
            =(HBITMAP)m_bmpBSBitmap.GetSafeHandle();
                    pBSBitmap
            ->SetBitmap(hbmp);
                }

            }
            3、修改控件運行時的屬性
            1)改變控件的顏色
               添加WM_CTLCOLOR事件
            HBRUSH CDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
            {
                HBRUSH hbr 
            = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

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

                
            return hbr;
            }
            4)設置控件的字體
               首先聲明字體CFont m_font,再定義字體,最后循環遍歷控件并對其進行設置字體
            int CDialogDlg::PointSizeToHeight(int iPointSize,HDC hDC)
            {
                
            int iRetVal=0;
                ASSERT(hDC
            !=NULL);
                iRetVal
            =-(MulDiv(iPointSize,::GetDeviceCaps(hDC,LOGPIXELSY),72));
                
            return iRetVal;
            }

            BOOL CDialogDlg::OnInitDialog()
            {

                LOGFONT lf;
                ZeroMemory(
            &lf,sizeof(LOGFONT));
                CClientDC clientDC(
            this);
                lf.lfHeight
            =PointSizeToHeight(18,clientDC.m_hDC);
                lf.lfWeight
            =FW_BOLD;
                strcpy(lf.lfFaceName,
            "MS Sans Serif");
                VERIFY(m_font.CreateFontIndirect(
            &lf));

            }

            void CDialogDlg::OnButton6() 
            {
                CWnd
            * pChildWnd=NULL;
                pChildWnd
            =GetTopWindow();
                
            while (NULL!=pChildWnd)
                {
                    pChildWnd
            ->SetFont(&m_font);
                    pChildWnd
            =pChildWnd->GetNextWindow(GW_HWNDNEXT);
                }
            }



            posted on 2009-07-26 10:38 The_Moment 閱讀(510) 評論(0)  編輯 收藏 引用 所屬分類: VC實踐
            欧美色综合久久久久久| 久久精品9988| 久久久久亚洲精品天堂| 国产成人久久激情91| 狠狠色丁香婷婷综合久久来来去 | 国产综合精品久久亚洲| 思思久久好好热精品国产| 久久国产热精品波多野结衣AV| 成人国内精品久久久久影院VR| 欧美久久亚洲精品| 99久久精品国产麻豆| 精品久久久无码中文字幕| 欧美精品久久久久久久自慰| 国产精品一区二区久久精品无码| 国产aⅴ激情无码久久| 9999国产精品欧美久久久久久| 国产69精品久久久久久人妻精品 | 亚洲va久久久噜噜噜久久天堂| 欧美亚洲国产精品久久蜜芽| 久久九九久精品国产免费直播| 国内精品伊人久久久久| 久久久噜噜噜久久中文福利| 美女久久久久久| 精品国产乱码久久久久久浪潮| 人妻精品久久久久中文字幕69| 97视频久久久| 日韩十八禁一区二区久久| 国产午夜精品久久久久九九| 久久精品成人国产午夜| 色欲久久久天天天综合网精品| 日本WV一本一道久久香蕉| 三级韩国一区久久二区综合| 精品久久久久久久中文字幕 | 热99RE久久精品这里都是精品免费 | 国产精品岛国久久久久| 久久精品一本到99热免费| 亚洲av日韩精品久久久久久a| 午夜久久久久久禁播电影| 国产A级毛片久久久精品毛片| 狠狠色狠狠色综合久久| 久久精品无码专区免费青青|