教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

VC++ 2010中实现自定义窗口按钮控件

来源:网络收集 时间:2026-09-14
导读: VC++ 2010中实现自定义窗口按钮控件 VC++ 2010中实现自定义窗口按钮控件 1. 新建一个MFC类使得它继承与CButton类; 2. 3 VC++ 2010中实现自定义窗口按钮控件 2.在生成的类中添加变量 #pragma once // CCustomButton class CCustomButton : public CButton {

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
VC++ 2010中实现自定义窗口按钮控件.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/110938.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)