• <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類與控件關(guān)聯(lián)起來
            1)使用GetDlgItem函數(shù)
               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函數(shù)為控件定義子類
               使用此函數(shù)要注意在添加代碼以去掉關(guān)聯(lián)
            void CDialogDlg::OnUsingattach() 
            {
                
            if(NULL==m_combo2.GetSafeHwnd())
                    
            //檢查控件有沒關(guān)聯(lián)到子類
                {
                    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設(shè)為CComboBox,在Variable name框中輸入“m_combo3”
            void CDialogDlg::OnButton2() 
            {
                m_combo3.AddString(
            "Using DDX");
                m_combo3.SetCurSel(
            0);
            }
            4)動態(tài)創(chuàng)建控件
               添加一個變量: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屬性設(shè)為TRUE。
            BOOL CDialogDlg::OnInitDialog()
            {
                    
                m_fancyButton.LoadBitmaps(IDB_UP,IDB_DOWN,IDB_FOCUSED,IDB_DISABLED);
                
            //分別設(shè)置圖像的四個狀態(tài)
                m_fancyButton.SizeToContent();//自動將按鈕的大小設(shè)置為位圖的大小
                     
            }
            2)使用BS_BITMAP風(fēng)格
               在按鈕屬性的樣式中把Bitmap屬性設(shè)為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)設(shè)置控件的字體
               首先聲明字體CFont m_font,再定義字體,最后循環(huán)遍歷控件并對其進行設(shè)置字體
            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 閱讀(512) 評論(0)  編輯 收藏 引用 所屬分類: VC實踐
            亚洲国产一成久久精品国产成人综合| 日韩精品久久无码人妻中文字幕| 久久精品国产亚洲AV麻豆网站| 久久久久久国产精品无码超碰| 国产成人精品久久一区二区三区 | 久久精品国产精品亚洲下载| 亚洲国产成人久久一区WWW| 狠狠色婷婷久久综合频道日韩 | 伊人精品久久久久7777| 99久久99久久精品国产片果冻| 久久精品中文字幕久久| 一本久久a久久精品综合香蕉| 久久精品国产亚洲av水果派 | 国产精品热久久无码av| 久久人人爽人人爽人人片AV不| 国产美女久久久| 国产成人精品综合久久久| 久久精品无码一区二区app| 精品熟女少妇av免费久久| 久久久久国产精品嫩草影院| 日韩精品久久久久久久电影| 日本福利片国产午夜久久| 久久99精品久久久久子伦| 久久久SS麻豆欧美国产日韩| 国内精品久久久久久久亚洲 | 久久99久久99精品免视看动漫| 三级三级久久三级久久| 一日本道伊人久久综合影| 久久无码av三级| 久久综合久久久| 精品久久香蕉国产线看观看亚洲| 中文字幕无码免费久久| 色综合久久夜色精品国产| 久久这里的只有是精品23| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久婷婷久久一区二区三区| 国产精品禁18久久久夂久| 久久人人爽人人爽人人AV东京热| 亚洲AV日韩精品久久久久| 人妻少妇久久中文字幕一区二区| 久久久久久伊人高潮影院|