VC++ 2010中实现自定义窗口按钮控件
VC++ 2010中实现自定义窗口按钮控件
VC++ 2010中实现自定义窗口按钮控件
1. 新建一个MFC类使得它继承与CButton类;
2.
3
VC++ 2010中实现自定义窗口按钮控件
2.在生成的类中添加变量
#pragma once
// CCustomButton
class CCustomButton : public CButton
{
public:
}; CCustomButton(); virtual ~CCustomButton(); BOOL m_IsPressed; DECLARE_MESSAGE_MAP() virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg BOOL OnEraseBkgnd(CDC* pDC);
DECLARE_DYNAMIC(CCustomButton) protected: public:
VC++ 2010中实现自定义窗口按钮控件
3.。重写方法WM_BUTTONDOWN WM_LBUTTONUP
// CustomButton.cpp : 实现文件
//
#include "stdafx.h"
#include "just test.h"
#include "CustomButton.h"
// CCustomButton
IMPLEMENT_DYNAMIC(CCustomButton, CButton)
CCustomButton::CCustomButton()
{
}
CCustomButton::~CCustomButton()
{
VC++ 2010中实现自定义窗口按钮控件
}
BEGIN_MESSAGE_MAP(CCustomButton, CButton)
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
// CCustomButton 消息处理程序
void CCustomButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CRect rect;
GetClientRect(rect);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.SetBkMode(TRANSPARENT);
CBrush m_Brush;
m_Brush.CreateStockObject(NULL_BRUSH);
dc.SelectObject(&m_Brush);
if(m_IsPressed)
{
CPen pen(PS_SOLID,2,RGB(255,2,0));
dc.SelectObject(&pen);
HRGN rgn = CreateEllipticRgn(0,0,rect.Width(),rect.Height());
SetWindowRgn(rgn,TRUE);
dc.Ellipse(0,0,rect.Width(),rect.Height());
dc.SetTextColor(RGB(0,0,255));
}
else
{
CPen pen(PS_SOLID,2,RGB(5,255,0));
dc.SelectObject(&pen);
HRGN rgn = CreateEllipticRgn(0,0,rect.Width(),rect.Height());
SetWindowRgn(rgn,TRUE);
dc.Ellipse(0,0,rect.Width(),rect.Height());
dc.SetTextColor(RGB(120,0,190));
}
VC++ 2010中实现自定义窗口按钮控件
CString str;
GetWindowText(str);
dc.DrawText(str,CRect(0,0,rect.Width(),rect.Height()),DT_CENTER|DT_VCENTER|DT_SINGLELINE);
// TODO: 添加您的代码以绘制指定项
}
void CCustomButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_IsPressed = FALSE;
CButton::OnLButtonUp(nFlags, point);
}
void CCustomButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_IsPressed = TRUE;
CButton::OnLButtonDown(nFlags, point);
}
BOOL CCustomButton::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
//return CButton::OnEraseBkgnd(pDC);
}
4、最后改写WM_ERASEBKGND 禁止窗口重画
然后关联控件变量
VC++ 2010中实现自定义窗口按钮控件
到此为止,我们已经我们完成了自定义按钮控江
…… 此处隐藏:423字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




