国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MFC重載CButton類,實現(xiàn)改變按鈕背景色、字體樣式更改、鼠標滑動按鈕變色功能

這篇具有很好參考價值的文章主要介紹了MFC重載CButton類,實現(xiàn)改變按鈕背景色、字體樣式更改、鼠標滑動按鈕變色功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  1. 在對話框內(nèi)添加button控件,button控件屬性中 所有者 描述改為TRUE
  2. 添加COwerButton類。代碼如下:

COwerButton.h

#pragma once
#include <afxwin.h>
class COwerButton :
	public CButton
{
	DECLARE_DYNAMIC(COwerButton)
public:
	COwerButton();
	virtual ~COwerButton();
	void SetButtonBgColor(COLORREF color);
	void SetButtonTextColor(COLORREF color);
	int SwitchDlgMouseMoveState;

private:
	COLORREF m_bgColor;
	COLORREF m_textColor;
	COLORREF m_DownColor;
	BOOL m_bPressed;

protected:
	DECLARE_MESSAGE_MAP()
	BOOL m_bTracking; //在鼠標按下沒有釋放時該值為true
	afx_msg void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
};

COwerButton.cpp

#include "pch.h"
#include "COwerButton.h"
IMPLEMENT_DYNAMIC(COwerButton, CButton)

COwerButton::COwerButton()
{
	m_bgColor = RGB(39, 58, 91);
	m_textColor = RGB(255, 255, 255);
	m_bPressed = FALSE;
	SwitchDlgMouseMoveState = 0;
}

COwerButton::~COwerButton()
{
}


BEGIN_MESSAGE_MAP(COwerButton, CButton)
	ON_WM_DRAWITEM()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
END_MESSAGE_MAP()



// COwerButton 消息處理程序

void COwerButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	CString btnCaption = L"";
	//設(shè)置標題
	CFont font;
	CWnd* pItemCWnd = FromHandle(lpDrawItemStruct->hwndItem);
	pItemCWnd->GetWindowText(btnCaption);

	CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);

	CRect drawRect;
	CBrush pBrush;
	CRect rect = lpDrawItemStruct->rcItem;//空間選擇
	//獲得繪圖DC
	//得到原Button的矩形大小
	drawRect.CopyRect(&(lpDrawItemStruct->rcItem));
	//繪制控件框架 
	pDC->DrawFrameControl(&drawRect, DFC_BUTTON, lpDrawItemStruct->CtlType);

	if (ODS_SELECTED & lpDrawItemStruct->itemState)
	{
		font.CreateFontW(0, 0, 0, 0, 400, NULL, NULL, NULL, DEFAULT_CHARSET, 0, 0, 0, 0, L"黑體");
		pDC->SelectObject(&font);
		pBrush.CreateSolidBrush(RGB(100, 149, 237));
	}
	else if (SwitchDlgMouseMoveState == 1)
	{
		font.CreateFontW(0, 0, 0, 0, 400, NULL, NULL, NULL, DEFAULT_CHARSET, 0, 0, 0, 0, L"黑體");
		pDC->SelectObject(&font);
		pBrush.CreateSolidBrush(RGB(30, 144, 255));
	}
	else
	{
		font.CreateFontW(0, 0, 0, 0, 400, NULL, NULL, NULL, DEFAULT_CHARSET, 0, 0, 0, 0, L"黑體");
		pDC->SelectObject(&font);
		pBrush.CreateSolidBrush(RGB(39, 58, 91));
	}
	//畫矩形 
	pDC->FillRect(drawRect, &pBrush);

	//定義一個CRect用于繪制文本 
	CRect textRect;
	//拷貝矩形區(qū)域 
	textRect.CopyRect(&drawRect);
	//獲得字符串尺寸
	CSize sz = pDC->GetTextExtent(btnCaption);
	//調(diào)整文本位置 居中 
	textRect.top += (textRect.Height() - sz.cy) / 2;
	//設(shè)置文本背景透明 
	pDC->SetBkMode(TRANSPARENT);
	//設(shè)置文本顏色
	pDC->SetTextColor(RGB(255, 255, 255));
	//繪制文本內(nèi)容
	pDC->DrawText(btnCaption, &textRect, DT_RIGHT | DT_CENTER | DT_BOTTOM);
}

//設(shè)置按鈕背景的顏色 
void COwerButton::SetButtonBgColor(COLORREF color)
{
	m_bgColor = color;
}

//設(shè)置按鈕字體的顏色
void COwerButton::SetButtonTextColor(COLORREF color)
{
	m_textColor = color;
}

void COwerButton::OnMouseMove(UINT nFlags, CPoint point)
{
	if (!m_bTracking)
	{
		TRACKMOUSEEVENT tme;
		tme.cbSize = sizeof(tme);
		tme.hwndTrack = m_hWnd;
		SwitchDlgMouseMoveState = 1;
		// 重畫按鈕
		Invalidate(TRUE);
		tme.dwFlags = TME_LEAVE | TME_HOVER;
		tme.dwHoverTime = 1;
		m_bTracking = _TrackMouseEvent(&tme);
	}
	CButton::OnMouseMove(nFlags, point);
}

LRESULT COwerButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
	SwitchDlgMouseMoveState = 0;
	m_bTracking = FALSE;
	InvalidateRect(NULL, FALSE);
	return 0;
}
  1. 給button按鈕添加變量,變量類型設(shè)為COwerButton,也可在主界面XXXDlg.h中修改button類型

COwerButton m_button1;文章來源地址http://www.zghlxwxcb.cn/news/detail-518096.html

  1. 運行完成,效果如下:
    cbutton設(shè)置顏色,MFC,C++,mfc,c++
    當鼠標移動到按鈕上以及點擊按鈕時按鈕顏色會發(fā)生變化:
    cbutton設(shè)置顏色,MFC,C++,mfc,c++
    cbutton設(shè)置顏色,MFC,C++,mfc,c++

到了這里,關(guān)于MFC重載CButton類,實現(xiàn)改變按鈕背景色、字體樣式更改、鼠標滑動按鈕變色功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包