• <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>

            山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

            Blog @ Blog

            當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達(dá)

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            BBS

            Blog

            Web

            最新評(píng)論

            自繪控件示例說明

            示例一:

            Step1: 創(chuàng)建對(duì)話框工程。

            Step2: 添加要自繪的按鈕,為每個(gè)按鈕添加一個(gè)位圖

            Step3: 添加WM_DRAWITEM 消息的響應(yīng)函數(shù)OnDrawItem實(shí)現(xiàn)具體的自繪,詳細(xì)實(shí)現(xiàn)方式參考函數(shù)實(shí)現(xiàn)代碼

            Step4: 本示例是根據(jù)ODS_FOCUS狀態(tài)進(jìn)行定制。還可以進(jìn)行其他狀態(tài)的繪制。控件自繪只需要記住一點(diǎn):隨時(shí)訪問MEASUREITEMSTRUCT數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)成員是進(jìn)行自繪的關(guān)

            //通過消息WM_DRAWITEM自繪按紐
            void CMyBtnDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
            {
                
            // TODO: Add your message handler code here and/or call default
                ::CDC BtnDC;
                ::CBitmap bitmapTrans;
                ::BITMAP bmp;
                ::CDC mem;
                ::CRect rc;

                
            //得到用于繪制按鈕的DC(從HDC得到一個(gè)CDC)
                BtnDC.Attach(lpDrawItemStruct->hDC);
                
            //準(zhǔn)備用于向按鈕區(qū)域傳輸位圖
                mem.CreateCompatibleDC(&BtnDC);
                
            //獲取按鈕所占的矩形大小
                rc = lpDrawItemStruct->rcItem;
                
            //獲取按鈕目前所處的狀態(tài),根據(jù)不同狀態(tài)繪制不同的按鈕
                UINT uState = lpDrawItemStruct->itemState;
                
            //如果是按鈕已經(jīng)得到焦點(diǎn),繪制選中狀態(tài)下的按鈕
                if(uState & ODS_FOCUS)
                
            {
                    
            //該函數(shù)從模塊的可執(zhí)行文件中加載指定的位圖資源
                    bitmapTrans.LoadBitmap(IDB_GETFOCUS);//切記是位圖ID
                    
            //本函數(shù)用于查看CBitmap對(duì)象的信息。返回的信息存放
                    
            //在pBitMap指向的BITMAP結(jié)構(gòu)中。
                    bitmapTrans.GetBitmap(&bmp);
                    
            //該函數(shù)選擇一對(duì)象到指定的設(shè)備上下文環(huán)境中,該新對(duì)象替換先前的相同類型的對(duì)象。
                    ::CBitmap *old = mem.SelectObject(&bitmapTrans);
                    
            //向按鈕所在位置傳輸位圖
                    
            //使用StretchBlt的目的是為了讓位圖隨按鈕大小而改變
                    BtnDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,
                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                    mem.SelectObject(old);
                    bitmapTrans.DeleteObject();

                    
            //設(shè)置文字背景為透明
                    BtnDC.SetBkMode(TRANSPARENT);
                    
            //繪制按鈕標(biāo)題
                    BtnDC.DrawText("已選中"&rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);

                }

                
            else
                
            {
                    bitmapTrans.LoadBitmap(IDB_LOSTFOCUS);
                    bitmapTrans.GetBitmap(
            &bmp);
                    ::CBitmap 
            *old2 = mem.SelectObject(&bitmapTrans);
                    
                
            //    ::CBitmap *old = mem.SelectObject(&bitmapTrans);
                    
            //向按鈕所在位置傳輸位圖
                    
            //使用StretchBlt的目的是為了讓位圖隨按鈕大小而改變
                    BtnDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,
                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                    
            //設(shè)置文字背景為透明
                    BtnDC.SetBkMode(TRANSPARENT);
                    
            //繪制按鈕標(biāo)題
                    BtnDC.DrawText("未選中",&rc,DT_CENTER | DT_VCENTER | DT_SINGLELINE);

                    mem.SelectObject(old2);
                    bitmapTrans.DeleteObject();
                }


                CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
            }

            posted on 2009-03-16 14:18 isabc 閱讀(2620) 評(píng)論(0)  編輯 收藏 引用 所屬分類: VC界面

            廣告信息(免費(fèi)廣告聯(lián)系)

            中文版MSDN:
            歡迎體驗(yàn)

            99热成人精品免费久久| 日本强好片久久久久久AAA| 噜噜噜色噜噜噜久久| 久久久久久噜噜精品免费直播| 久久亚洲av无码精品浪潮| 精品久久久久久中文字幕大豆网| 亚洲精品国产第一综合99久久| 久久青青色综合| 国产午夜久久影院| 久久午夜电影网| 99久久www免费人成精品| 久久久久国产亚洲AV麻豆| 精品久久国产一区二区三区香蕉| 午夜精品久久久久9999高清| 精品久久香蕉国产线看观看亚洲| 久久强奷乱码老熟女| 婷婷久久久亚洲欧洲日产国码AV| 久久久久久国产a免费观看黄色大片 | 亚洲精品午夜国产va久久| 精品久久久久久久无码| 少妇无套内谢久久久久| 亚洲国产精品无码久久久久久曰 | 欧美日韩精品久久久免费观看| 无码国内精品久久人妻蜜桃| 亚洲精品高清国产一久久| 久久久久人妻一区精品色| 久久男人Av资源网站无码软件 | 中文字幕乱码人妻无码久久| 久久成人小视频| 久久精品成人免费观看97| 国产精品99久久99久久久| 亚洲成色WWW久久网站| 日本精品久久久久影院日本| 国产亚洲精久久久久久无码AV| 久久国产精品无码HDAV| 99精品国产综合久久久久五月天 | 久久综合狠狠综合久久| 久久精品一本到99热免费| 99久久夜色精品国产网站| 香蕉久久永久视频| 久久国产亚洲精品|