VC++实现切换按钮

本文介绍了如何在VC++中实现一种更直观的切换按钮控件,作为Radio按钮和CheckBox之外的选择。提供了自绘的SwitchButton控件源码下载链接,期待读者的反馈和建议。
摘要由CSDN通过智能技术生成

VC++实现切换按钮

有时候要实现两个选项的切换,常规做法1是放两个Radio按钮控件,并设置这两个按钮为一组。2是放一个Check按钮控件。但感觉都不是那么理想和直观。有没有更好的实现方式呢?下面将给你介绍一种我自绘的控件,我把它命名为“切换控件”(SwitchButton)。实现的效果如下图实现,给你一个多的选择,以供参考。

下面是实现源码:

/// 说明文件/
//文件:SwitchBtn.h                                                                //
//功能:切换按钮类,实现两个选项一个按钮实现,自绘实现。                          //
//作者:cbNotes(http://blog.csdn.net/cbnotes)                                    //
//版本:1.0.0                                                                      //
//时间:2013-01-23                                                                 //
//备注:该控件类免费开源,欢迎大家使用和改进。但请保持该说明文件的完整和原创性     //
/

#pragma once

// CSwitchBtn

class CSwitchBtn : public CWnd
{
	DECLARE_DYNAMIC(CSwitchBtn)

public:
	CSwitchBtn();
	virtual ~CSwitchBtn();
private:
	int m_nID;          //控件ID
	CWnd *m_pParentWnd; //父窗口指针
	BOOL m_bAnimation;  //是否动画标记
	BOOL m_bLeft;       //是否选择左边标记
	CString m_szLeftText,m_szRightText;
	COLORREF m_clrNorText,m_clrHotText;//文字颜色
	COLORREF m_clrNorBG,m_clrHotBG;    //背景颜色
	COLORREF m_clrNorBorder,m_clrHotBorder;//边框颜色
	int      m_ngap;//间隔

protected:
	DECLARE_MESSAGE_MAP()
public:
	//自绘按钮
	afx_msg void OnPaint();
	//按钮按钮释放消息处理,主要是发送消息
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//设置按钮上的文字
	void SetText(CString szLeft,CString szRight);
	// 选择哪个选项
	void SetSelect(bool bLeft);
	// 设置背景色
	void SetBKColor(COLORREF clrBackGround);
	// 设置滑块的颜色
	void SetSliderColor(COLORREF clrSider);
	// 设置文本的颜色
	void SetTextColor(COLORREF clrText);
	//设置选择文本的颜色
	void SetHotTextColor(COLORREF clrHotText);
	//设置外边框的颜色
	void SetBorderColor(COLORREF clrBorder);
	//设置滑块边框的颜色
	void SetSliderBorderColor(COLORREF clrSliderBorder);
	// 动态创建按钮
	bool CreateButton(CRect rt,CWnd *pParentWnd,int nID);
	// 初始化按钮
	void InitButton(CString szLeft,CString szRight,bool bLeft = true);
};


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值