在MFC中给按钮添加图标


在MFC中的按钮,本身只有文字,比较简单,现在想实现在按钮上添加图标(.ico格式)的效果。如果想改变窗体的Icon利用的是SetIcon函数,而SetIcon函数其实是CWnd的成员函数。而CButton也是一种窗口,即继承自CWnd,所以Button也可以利用这个函数来实现自定义的图标。
1、引入Icon资源。
    将后缀为.ico的图标资源添加进工程里,记录资源号,如IDI_ICON1。
2、给要添加图标的Button绑定控件变量
    类型选择Control,名称可以取为m_BtnTest。
3、修改对话框的初始化函 OnInitDialog
    在OnInitDialog函数中,添加如下代码:
HICON m_IconBtn=AfxGetApp()->LoadIcon(IDI_ICON1);//导入Icon资源,利用m_hIconBtn来存储句柄。

  m_BtnTest.SetIcon(m_IconBtn); 
    经过以上三步,就可以实现按钮上同时显示文字和图标的效果。
参考资料:
1、 MFC中为按钮添加图片,图标

MFC(Microsoft Foundation Classes)中给按钮添加BMP图标,可以通过以下步骤实现: 1. **准备位图资源**:首先,你需要准备一个BMP格式的图标,并将其添加到项目的资源文件中。你可以在资源视图中右键点击项目,选择“添加”->“资源”,然后选择“Bitmap”,导入你的BMP文件。 2. **创建按钮控件**:在对话框编辑器中,拖拽一个按钮控件到对话框上,并设置其ID,例如`IDC_MY_BUTTON`。 3. **子类化按钮控件**:为了更灵活地控制按钮的外观和行为,你需要创建一个按钮控件的子类,并重写其绘制方法。 4. **编写代码加载并绘制位图**: ```cpp // MyButton.h #pragma once #include <afxwin.h> class CMyButton : public CButton { public: CMyButton(); virtual ~CMyButton(); protected: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); private: CBitmap m_bitmap; }; // MyButton.cpp #include "MyButton.h" #include "Resource.h" // 确保包含你的资源头文件 CMyButton::CMyButton() { } CMyButton::~CMyButton() { } void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC dc; dc.Attach(lpDrawItemStruct->hDC); // 加载位图 if (m_bitmap.LoadBitmap(IDB_MY_BITMAP)) { BITMAP bitmap; m_bitmap.GetBitmap(&bitmap); // 创建内存DC CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap); // 绘制位图 dc.BitBlt(lpDrawItemStruct->rcItem.left, lpDrawItemStruct->rcItem.top, bitmap.bmWidth, bitmap.bmHeight, &memDC, 0, 0, SRCCOPY); // 恢复旧位图 memDC.SelectObject(pOldBitmap); } dc.Detach(); } ``` 5. **在对话框类中使用自定义按钮**: ```cpp // MyDialog.h #pragma once #include "MyButton.h" class CMyDialog : public CDialogEx { // ... public: virtual BOOL OnInitDialog(); private: CMyButton m_myButton; }; // MyDialog.cpp #include "MyDialog.h" BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 关联按钮控件 m_myButton.SubclassDlgItem(IDC_MY_BUTTON, this); return TRUE; } ``` 通过以上步骤,你就可以在MFC应用程序中为按钮添加BMP图标了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值