• <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 閱讀(505) 評論(0)  編輯 收藏 引用 所屬分類: VC實踐
            性高朝久久久久久久久久| 精品少妇人妻av无码久久| 色综合久久久久网| 亚洲精品久久久www| 欧美日韩久久中文字幕| 国产精品久久久久jk制服| 久久久综合九色合综国产| 久久久久国产| 久久Av无码精品人妻系列 | 久久高潮一级毛片免费| 久久人人超碰精品CAOPOREN| 一本色道久久综合狠狠躁| 久久国产精品99久久久久久老狼 | 久久久久人妻一区精品性色av| 99久久免费国产特黄| 久久丝袜精品中文字幕| 久久久久久久久无码精品亚洲日韩 | 97久久超碰国产精品2021| 久久亚洲AV永久无码精品| 国产欧美久久久精品| 99久久精品国产一区二区| 久久伊人精品青青草原日本| 99久久er这里只有精品18| 亚洲AV日韩精品久久久久久久| 国产精品va久久久久久久| 丰满少妇高潮惨叫久久久| 午夜久久久久久禁播电影| 久久久久波多野结衣高潮| 久久男人AV资源网站| 国产香蕉97碰碰久久人人| 久久美女网站免费| www.久久热| 一级做a爱片久久毛片| 亚洲精品tv久久久久| 国产高潮国产高潮久久久91 | 欧美成人免费观看久久| 久久久久国产| 日本久久中文字幕| 一本色综合久久| 久久久久青草线蕉综合超碰| 综合久久精品色|