代码拉取完成,页面将自动刷新
MFC/WTL CImageButton 支持[BMP
,GIF
,JPEG
,PNG
,TIFF
], 支持高DPI
CImageButton
是一个支持4种状态
图形显示的按钮控件
以上4种状态可分别设置为不同的图片, 支持PNG
图片透明通道
ImageButton.h
和ImageButton.cpp
到项目中CxxxDlg
类包含头文件 ImageButton.h
CImageButton
类型的变量到资源IDOnInitDialog()
虚函数中调用btn.SetImages()
方法#pragma once
#include "ImageButton.h"
// CMFCDemoDlg 对话框
class CMFCDemoDlg : public CDialogEx
{
// ...
private:
CImageButton m_btnTest;
};
BOOL CMFCDemoDlg::OnInitDialog()
{
// ....
// 设置按钮图片
m_btnTest.SetImages(IDB_PNG1, IDB_PNG2, IDB_PNG3, IDB_PNG4, _T("PNG"));
// 开启自动大小, 跟随图片宽高
m_btnTest.AutoSize();
// ....
}
ImageButton.h
项目中CMainDlg
类包含头文件 ImageButton.h
CMainDlg
的BEGIN_MSG_MAP(CMainDlg)
与END_MSG_MAP()
之间加REFLECT_NOTIFICATIONS()
用来反射WM_DRAWITEM
消息, 随后自行加入COMMAND_HANDLER()
绑定按钮事件CImageButton
类型的成员变量OnInitDialog()
函数中调用btn.SubclassWindow()
方法与btn.SetImages()
方法#pragma once
#include "ImageButton.h"
class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>, public CMessageFilter, public CIdleHandler
{
// ...
BEGIN_MSG_MAP(CMainDlg)
COMMAND_HANDLER(IDC_BUTTON_TEST, BN_CLICKED, OnBnClickedButtonTest) // 按钮事件
REFLECT_NOTIFICATIONS() // 反射 WM_MEASUREITEM 和 WM_DRAWITEM 消息
END_MSG_MAP()
// ...
private:
CImageButton m_btnTest;
};
LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// ...
// 子类化控件
m_btnTest.SubclassWindow(GetDlgItem(IDC_BUTTON_TEST));
// 设置按钮图片
m_btnTest.SetImages(IDB_PNG1, IDB_PNG2, IDB_PNG3, IDB_PNG4, _T("PNG"));
// 开启自动大小, 跟随图片宽高
m_btnTest.AutoSize();
// ...
return TRUE;
}
// 按钮事件
LRESULT CMainDlg::OnBnClickedButtonTest(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
MessageBox(_T("Test"), _T(""), MB_OK | MB_ICONINFORMATION);
return 0;
}
IDB_PNG1
, IDB_PNG2
, IDB_PNG3
, IDB_PNG4
均为资源ID, 如何导入资源请去百度上谷歌一下
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。