资源简介
在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个文件信息
相关资源
- MFC计算器程序
- MFC上位机x64串口通信程序
- MFC计算器包含可执行文件
- VS2010+MFC串口助手,自动识别串口,支
- VS2012 MFC下UDP通信
- MFC.Windows程序设计第二版、电子书、安
- VS2017基于MFC 串口通信上位机程序
- mfc数据库sqlite3的基本操作
- MFC通过CEF封装Chrome浏览器内核
- c++ mfc 单词及其释义的录入和读取,查
- MFC_Socket_Server.rar
- MFC连接打印机程序
- MFC+VS2013+OPENCV打开视频,带有滑动条拖
- 用MFC实现的基于OPENCV的张正友棋盘格
- mfcDll工程+qt工程.rar
- 基于MFC带滚动条的图片浏览UI
- 31个mfc课程设计有源码和文档.rar
- MFC UDP 发送与接收
- 图形学课程作业-mfc.zip
- BCGControlBar MFC Pro 28.0完整版
-
VC MFC Joseph li
nk约瑟夫环出列顺序动 - VS2010运行库包括mfc
- MFC42U.LIB
- MFC实现万花筒效果画笔画出任意线条
- 车牌识别_C++ code_MFC.zip
- MFC Windows 程序设计 中文版
- 医学图片DICOM格式打开以及像素计算
- MFC+VS2013+OpenCV打开任意路径下的图片并
- vs2010 + MFC + UDP socket 聊天程序。
- VS实现MFC的点对点聊天室
评论
共有 条评论