MFC 进度条自绘按钮类

MFC 进度条自绘按钮类

废话不多说 先看效果
![![在这里插入图片描述](https://img-blog.csdnimg.cn/a5b5a645a5794508bb9bea687da7e57c.png](https://img-blog.csdnimg.cn/0ea661ec66c246dda1dc33d4e0ae7713.png

看看怎么调用

这当然先包含砸门的进度条绘图类
#include "MySlider.h"
   MySlider m_lider;//防在Dlg头文件的窗口类里面
	m_lider.Create(m_hWnd,GetDC(), 
		RGB(0xf0, 0xf0, 0xf0), 0, 581);
	m_lider.SetSize(2);
	m_lider.SetLen(1000);
	m_lider.SetSpe(RGB(0x6c,0xe2,0x6c));
	m_lider.SetBack(RGB(0xff,0xee,0x62));
	m_lider.SetPos(50);
	

下面具体的代码
头文件MySlider.h

#pragma once
#include <afxcmn.h>
#include <afx.h>
class MySlider
{
   
public:
	MySlider();
	~MySlider();
public:
	//获取滑块位置返回百分比
	int GetPos() const;
	//设置滑块位置百分比
	void SetPos( int nPos);
	//设置滑块背景颜色
	void SetBack(COLORREF color);
	//设置进度条颜色
	void SetSpe(COLORREF color);
	//设置进度条宽窄
	void SetSize(int size);
	//返回进度条宽窄
	int GetSize();
	//返回进度条宽窄
	POINT GetBraxy();
	//设置进度条长度必须是100的倍数
	void SetLen(int len);
	//返回进度条长度
	int GetLen();
	//创建进度条对象必须指定CDC设备和窗口背景颜色
	BOOL Create(HWND hwnd, CDC* dc, COLORREF color,int x,int y );
	void WindowProc(UINT message, WPARAM wParam, LPARAM lParam);

private:
	typedef struct _MYRECT
	{
   
		int x = 0;
		int y = 0;
		int x1 = 0;
		int y1 = 0;
	}MYRECT, * PMyRECT;
	//画进度条
	BOOL myPolygon(CDC* dc,const POINT* lpPoints, int nCount, COLORREF crColor);
     //画滑块
	BOOL ellipse(CDC* dc);
	void OnPaint(CDC* dc);
	void OnLButtonUp(CPoint point);
	void OnLButtonDown(CPoint point);
	void OnMouseMove(CPoint point);
	//重画
	void myRedraw(CDC* dc);
	//计算进度坐标
	void SetPosxy();
private:	
	int m_Slider_len; //进度条长度必须是100的倍数
	int m_Slider_size ; //进度条大小 宽度相数
	BOOL m_size = FALSE;//是否增加了
	int m_Slider_pos ;   //进度条位置
	COLORREF m_Slider_back;//进度条背景颜色
	COLORREF m_windows_back;//窗口背景颜色
	COLORREF m_Slider_spe;  //进度条颜色
	CDC* m_dc;    //绘制进度条的设备
	CRect rc;
	MYRECT m_pos_rect = {
    0 }; //进度条pos
	POINT  m_Slider_xy;        //进度条起始位置
	HWND m_hWnd;              //主窗口句柄
	BOOL m_Slider = FALSE; //是否刷新背景
	BOOL m_back = FALSE;   //是否画出了滑块
	BOOL m_Slider_btnDwn = FALSE; //鼠标左键按下
	BOOL m_Slider_braDwn = FALSE; //按下的是否为进度条区域
	BOOL m_Slider_posbtn = FALSE;
};



MySlider.cpp 实现文件

#include "pch.h"
#include "MySlider.h"
#include <iostream>
#include "MicPalay.h"

//#include <wingdi.cpp>
//#include <afxwin.h>
#define BK_COLOR RGB(255, 255, 255)
#define SEP_COLOR RGB(0x42,0x99,0xED)	//4299ed
#define WINDOWS_COLOR RGB(0xF0,0xF0,0xF0)	//4299ed
#define VT_DOWN    1
#define 
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C+V代码搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值