資源簡介
在MFC的基礎上將按鈕控件分別以垂直、水平和傾斜三種形式繪制了一個6個按鈕控件圖,但是在繪圖上還是有很大的差距的
代碼片段和文件信息
//?ButtonDot.cpp?:?實現文件
//
#include?“stdafx.h“
#include?“example.h“
#include?“ButtonDot.h“
//?CButtonDot
IMPLEMENT_DYNAMIC(CButtonDot?CButton)
CButtonDot::CButtonDot()
{
m_Pen1.CreatePen(PS_SOLID?1?RGB(201?201?233));
m_normalBrush1.CreateSolidBrush(RGB(231?221?223));//正常狀態下的按鈕顏色??
m_activeBrush1.CreateSolidBrush(RGB(201?201?233));//按鈕按下時的按鈕顏色??
}
CButtonDot::~CButtonDot()
{
m_Pen1.Deleteobject();
m_normalBrush1.Deleteobject();
m_activeBrush1.Deleteobject();
}
BEGIN_MESSAGE_MAP(CButtonDot?CButton)
END_MESSAGE_MAP()
//?CButtonDot?消息處理程序
void?CButtonDot::DrawItem(LPDRAWITEMSTRUCT?lpDrawItemStruct)
{
//?TODO:??添加您的代碼以繪制指定項
CDC*?pDC?=?CDC::FromHandle(lpDrawItemStruct->hDC);
int?nSaveDC?=?pDC->SaveDC();//存儲當前設備環境,以便繪圖結束時恢復原來狀態??
pDC->Selectobject(&m_normalBrush1);//選擇按鈕正常狀態(默認狀態)下的畫刷??
pDC->Selectobject(&m_Pen1);//選擇畫筆??
CRect?rct?=?lpDrawItemStruct->rcItem;//獲取按鈕矩形區域??
if?(lpDrawItemStruct->itemState&ODS_SELECTED)//繪制按鈕按下時的顏色??
{
pDC->Selectobject(&m_activeBrush1);
}
pDC->Ellipse(&rct);//畫橢圓按鈕,這一步用了之前選擇的畫筆和畫刷??
???//重繪字體??
pDC->SetBkMode(TRANSPARENT);//重繪文本時不擦除背景即透明模式,如果選擇OPAQUE(不透明),在文本四周有白色矩形邊框,十分之難看??
CString?strText{};//c++11版本以下不支持此方法??
GetWindowText(strText);//獲取按鈕文本??
pDC->DrawText(strText?rct?DT_CENTER?|?DT_VCENTER?|?DT_SINGLELINE);//重繪按鈕文本??
//恢復設備環境??
pDC->RestoreDC(nSaveDC);
}
void?CButtonDot::PreSubclassWindow()
{
//?TODO:?在此添加專用代碼和/或調用基類
Modifystyle(0?BS_OWNERDRAW);//改為自繪風格??
?//?繪制按鈕可用區域,切掉四個邊角??
CRgn?rgn;
CRect?rct;
GetClientRect(&rct);
rgn.CreateEllipticRgnIndirect(&rct);//在按鈕矩形內創建橢圓區域??
::SetWindowRgn(GetSafeHwnd()?(HRGN)rgn?true);//將橢圓區域應用到按鈕上??
CButton::PreSubclassWindow();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????40448??2017-08-10?19:44??example\.vs\example\v14\.suo
?????文件?????230400??2017-08-10?19:29??example\Debug\example.exe
?????文件????1529196??2017-08-10?19:29??example\Debug\example.ilk
?????文件????8032256??2017-08-10?19:29??example\Debug\example.pdb
?????文件???????2057??2017-08-10?17:33??example\example\ButtonDot.cpp
?????文件????????385??2017-08-10?17:28??example\example\ButtonDot.h
?????文件??????39529??2017-08-10?17:34??example\example\Debug\ButtonDot.obj
?????文件????????140??2017-08-10?19:29??example\example\Debug\example.log
?????文件??????69887??2017-08-10?17:29??example\example\Debug\example.obj
?????文件???55246848??2017-08-09?16:18??example\example\Debug\example.pch
?????文件??????74068??2017-08-10?19:29??example\example\Debug\example.res
?????文件???????4858??2017-08-10?19:27??example\example\Debug\example.tlog\CL.command.1.tlog
?????文件??????83532??2017-08-10?19:27??example\example\Debug\example.tlog\CL.read.1.tlog
?????文件???????6102??2017-08-10?19:27??example\example\Debug\example.tlog\CL.write.1.tlog
?????文件????????189??2017-08-10?19:29??example\example\Debug\example.tlog\example.lastbuildstate
?????文件???????1762??2017-08-10?19:29??example\example\Debug\example.tlog\li
?????文件???????6238??2017-08-10?19:29??example\example\Debug\example.tlog\li
?????文件????????868??2017-08-10?19:29??example\example\Debug\example.tlog\li
?????文件????????354??2017-08-10?19:29??example\example\Debug\example.tlog\rc.command.1.tlog
?????文件???????3128??2017-08-10?19:29??example\example\Debug\example.tlog\rc.read.1.tlog
?????文件????????174??2017-08-10?19:29??example\example\Debug\example.tlog\rc.write.1.tlog
?????文件??????59930??2017-08-10?17:29??example\example\Debug\exampleDlg.obj
?????文件??????24205??2017-08-10?17:24??example\example\Debug\Month.obj
?????文件?????922079??2017-08-09?16:18??example\example\Debug\stdafx.obj
?????文件??????42688??2017-08-10?19:27??example\example\Debug\TestBtn.obj
?????文件??????44510??2017-08-10?14:57??example\example\Debug\testbtn.obj.enc
?????文件??????38842??2017-08-10?17:24??example\example\Debug\TestBtn1.obj
?????文件????2444288??2017-08-10?19:27??example\example\Debug\vc140.idb
?????文件????6885376??2017-08-10?19:27??example\example\Debug\vc140.pdb
?????文件?????113624??2017-08-10?19:44??example\example\example.aps
............此處省略38個文件信息
評論
共有 條評論