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

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

            Blog @ Blog

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

            常用鏈接

            統(tǒng)計

            積分與排名

            BBS

            Blog

            Web

            最新評論

            自繪控件示例說明

            示例一:

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

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

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

            Step4: 本示例是根據(jù)ODS_FOCUS狀態(tài)進行定制。還可以進行其他狀態(tài)的繪制。控件自繪只需要記住一點:隨時訪問MEASUREITEMSTRUCT數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)成員是進行自繪的關(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得到一個CDC)
                BtnDC.Attach(lpDrawItemStruct->hDC);
                
            //準備用于向按鈕區(qū)域傳輸位圖
                mem.CreateCompatibleDC(&BtnDC);
                
            //獲取按鈕所占的矩形大小
                rc = lpDrawItemStruct->rcItem;
                
            //獲取按鈕目前所處的狀態(tài),根據(jù)不同狀態(tài)繪制不同的按鈕
                UINT uState = lpDrawItemStruct->itemState;
                
            //如果是按鈕已經(jīng)得到焦點,繪制選中狀態(tài)下的按鈕
                if(uState & ODS_FOCUS)
                
            {
                    
            //該函數(shù)從模塊的可執(zhí)行文件中加載指定的位圖資源
                    bitmapTrans.LoadBitmap(IDB_GETFOCUS);//切記是位圖ID
                    
            //本函數(shù)用于查看CBitmap對象的信息。返回的信息存放
                    
            //在pBitMap指向的BITMAP結(jié)構(gòu)中。
                    bitmapTrans.GetBitmap(&bmp);
                    
            //該函數(shù)選擇一對象到指定的設(shè)備上下文環(huán)境中,該新對象替換先前的相同類型的對象。
                    ::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);
                    
            //繪制按鈕標題
                    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);
                    
            //繪制按鈕標題
                    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 閱讀(2627) 評論(0)  編輯 收藏 引用 所屬分類: VC界面

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

            中文版MSDN:
            歡迎體驗

            亚洲国产精品狼友中文久久久| 精品久久久久久99人妻| 99久久99久久| 天天爽天天爽天天片a久久网| 久久婷婷人人澡人人| 色诱久久av| 99久久99久久精品免费看蜜桃| 国产精品伦理久久久久久| 亚洲中文字幕无码久久2017| 99久久人妻无码精品系列蜜桃| 久久久久久伊人高潮影院| 成人午夜精品久久久久久久小说| 亚洲国产成人精品无码久久久久久综合 | 一本久久精品一区二区| 77777亚洲午夜久久多喷| 色综合久久88色综合天天| 97精品依人久久久大香线蕉97| 国产精品久久久天天影视香蕉 | 精品久久久久一区二区三区| 久久久久人妻一区二区三区| 国产ww久久久久久久久久| 久久中文骚妇内射| 免费无码国产欧美久久18| 久久中文字幕视频、最近更新 | 日产精品久久久久久久| 亚洲欧美精品伊人久久| 草草久久久无码国产专区| 无码超乳爆乳中文字幕久久 | 亚洲国产精品综合久久一线| 97久久精品国产精品青草| 亚洲色欲久久久综合网东京热| 午夜精品久久久久成人| 久久97久久97精品免视看秋霞| 国内精品久久久久影院网站| 伊人久久免费视频| 久久国产福利免费| 66精品综合久久久久久久| 99久久精品免费看国产一区二区三区| 久久99国产亚洲高清观看首页 | 天天做夜夜做久久做狠狠| 国产叼嘿久久精品久久|