资源简介
在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 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
- MFC坦克大战
- VC++ 中国象棋经典游戏源代码
- 课程设计: MFC 学生信息管理系统
- MFC对ACCESS数据库的增加、删除、查找
- vc.6.0 MFC 人事管理系统源码
- MFC 在线考试系统
评论
共有 条评论