


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MFC Button 控件的背景顏色一個(gè)繼承于 CButton 的按鈕控件類,實(shí)現(xiàn) Button 背景色與文字的共存與改變,可以自行設(shè) 計(jì)背景色。頭文件:CMyButton.h如下:#pragma once#include afxwin.hclass CMyButton : public CButton/DECLARE_DYNAMIC(CMyButton)public:CMyButton();virtual CMyButton();/設(shè)置 Button Down 的背景顏色void SetDownColor(COLORREF color);/設(shè)置 Button Up 的背景顏色void Set
2、UpColor(COLORREF color);BOOL Attach(const UINT nID, CWnd* pParent);protected:/必需重載的函數(shù)virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);public:/三種顏色分別為文字,Bu tt on Down的背景顏色,Butt on Up的背景顏色COLORREF m_TextColor, m_DownColor, m_UpColor;源文件: CMyButton.cpp#include StdAfx.h#include CMyButton.hCMyBut
3、ton:CMyButton(void)m_DownColor = m_UpColor = RGB(0,0,0);CMyButton:CMyButton(void)/CMyButton是CButton派生類,具有CButton的全部成員函數(shù),但在創(chuàng)建時(shí)需要使用BS_OWNERDRAW風(fēng)格。如果按鈕不是動(dòng)態(tài)生成,使用Attach函數(shù)使CMyButton代替原來(lái)按鈕的窗口過(guò)程。BOOL CMyButton:Attach(const UINT nID, CWnd* pParent)/GetDlgItem(nID)-ModifyStyle(0,BS_OWNERDRAW,0);if (!SubclassD
4、lgItem(nID, pParent)return FALSE;return TRUE;void CMyButton:SetDownColor(COLORREF color)m_DownColor = color;void CMyButton:SetUpColor(COLORREF color)m_UpColor = color;void CMyButton:DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)/ TODO: Add your code to draw the specified itemCDC dc;dc.Attach(lpDrawItem
5、Struct-hDC);得到繪制的設(shè)備環(huán)境 CDC VERIFY(lpDrawItemStruct-CtlType=ODT_BUTTON);/得當(dāng)Button上文字,這里的步驟是:1,先得到在資源里編輯的按鈕的文字,/然后將此文字重新繪制到按鈕上,/同時(shí)將此文字的背景色設(shè)為透明,這樣,按鈕上僅會(huì)顯示文字const int bufSize = 512;TCHAR bufferbufSize;GetWindowText(buffer, bufSize);int size=strlen(buffer); /得到長(zhǎng)度DrawText(lpDrawItemStruct-hDC,buffer,size,&
6、lpDrawItemStruct-rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP); /繪制文字SetBkMode(lpDrawItemStruct-hDC,TRANSPARENT); /透明if (lpDrawItemStruct-itemState &ODS_SELECTED) /當(dāng)按下按鈕時(shí)的處理/重繪整個(gè)控制CBrush brush(m_DownColor);dc.FillRect(&(lpDrawItemStruct-rcItem),&brush);/因?yàn)檫@里進(jìn)行了重繪,所以文字也要重繪DrawText(lpDrawItemS
7、truct-hDC,buffer,size,&lpDrawItemStruct-rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);SetBkMode(lpDrawItemStruct-hDC,TRANSPARENT);else /當(dāng)按鈕不操作或者彈起時(shí)CBrush brush(m_UpColor);dc.FillRect(&(lpDrawItemStruct-rcItem),&brush);/同上,進(jìn)行重繪文字DrawText(lpDrawItemStruct-hDC,buffer,size,&lpDrawItemStruct-rcIt
8、em,DT_CENTER|DT_V CENTER|DT_SINGLELINE|DT_TABSTOP);SetBkMode(lpDrawItemStruct-hDC,TRANSPARENT);if (lpDrawItemStruct-itemState &ODS_SELECTED)&(lpDrawItemStruct-itemAction&(ODA_SELECT| ODA_DRAWENTIRE) /選中了本控件, 高亮邊框COLORREF fc=RGB(255-GetRValue(m_UpColor),255-GetGValue(m_UpColor), 255- GetBValue(m_UpCo
9、lor);/CBrush brush(fc);/ dc.FrameRect(&(lpDrawItemStruct-rcItem),&brush);/if (!(lpDrawItemStruct-itemState & ODS_SELECTED) &(lpDrawItemStruct-itemAction & ODA_SELECT)/控制的選中狀態(tài)結(jié)束,去掉邊框CBrush brush(m_UpColor);dc.FrameRect(&lpDrawItemStruct-rcItem,&brush);/dc.Detach();/調(diào)用 CMyButton 類的方式:在對(duì)話框類頭文件中#include
10、 CMyButton.h,再在對(duì)話框類中找到函數(shù)OnlnitDialog()如果 找不到可以在對(duì)話框事件屬性中重載出來(lái),其中m_cbBtn變量的聲明為:CMyButton m_cbBtn;這句可以放在類的其他地方,只要合法就行/將按鈕修改為 BS_OWNERDRAW 風(fēng)格,其他風(fēng)格無(wú)效 GetDlgItem(IDC_BUTTON1)-ModifyStyle(0,BS_OWNERDRAW,0);/綁定控件IDC_BUTTON1與類CMyButton,響應(yīng)重載函數(shù)Drawltem() m_cbBtn.Attach(IDC_BUTTON1,this);/設(shè)置 Button Down 的背景色 m_cbBtn.SetDownColor(RGB(255,0,0);/設(shè)置 Button Up 的背景色 m_cbBtn.SetUpColor(RGB(0,0,255);PS:如果連接代碼時(shí)在m_cb
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)PET電熱膜數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)IDE轉(zhuǎn)接頭數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)5-氯茚滿酮數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025至2030年中國(guó)高效變頻非真空管市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)鎂合金焊接車架市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)西米替丁片市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)膠絲布葉市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)電視顯微鏡市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)牛仔皮牌市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)澆注型壓克力磨砂燈飾板市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 細(xì)集料篩分自動(dòng)計(jì)算表格
- 15ZJ001 建筑構(gòu)造用料做法
- 年產(chǎn)5萬(wàn)噸趣味酥性餅干生產(chǎn)車間設(shè)計(jì)
- RFJ013-2010 人民防空工程防化設(shè)計(jì)規(guī)范
- 柳州某醫(yī)院空氣源熱泵熱水系統(tǒng)設(shè)計(jì)案例
- 西師大版六年級(jí)數(shù)學(xué)下冊(cè)第四單元 扇形統(tǒng)計(jì)圖 單元概述和課時(shí)安排
- 《中越傳統(tǒng)節(jié)日對(duì)比問(wèn)題研究5100字【論文】》
- 《 民航服務(wù)心理學(xué)》考試題及參考答案
- 2021學(xué)堂在線網(wǎng)課《生活英語(yǔ)讀寫》課后作業(yè)單元考核答案
- 中國(guó)近現(xiàn)代史綱要超星爾雅答案貴州大學(xué)-
- Q∕GDW 12162-2021 隔離開(kāi)關(guān)分合閘位置雙確認(rèn)系統(tǒng)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論