注意:此按钮使用前应该将按钮的属性:Owner Draw->True

注意:此按钮使用前应该将按钮的属性:Owner Draw->True

注意:此按钮使用前应该将按钮的属性:Owner Draw->True

一、语法

class CBitmapButton : public CButton

二、函数

“属性” 描述
CBitmapButton::AutoLoad 将对话框中的按钮与 类的对象关联,按 (加载) 位图,并调整按钮大小以适应 CBitmapButton 位图。
CBitmapButton::LoadBitmaps 通过从应用程序的资源文件加载一个或多个命名位图资源并将位图附加到对象来初始化 对象。
CBitmapButton::SizeToContent 调整按钮的大小以容纳位图。

1、函数:LoadBitmaps

BOOL CBitmapButton::LoadBitmaps(UINT nIDBitmapResource,
UINT nIDBitmapResourceSel, UINT nIDBitmapResourceFocus,
UINT nIDBitmapResourceDisabled)

函数接受四个参数,也就是位图资源的ID,分别对应如下四个状态 :

  • 常规状态
  • 按下状态
  • 焦点状态
  • 禁用状态

当按钮处于不同状态就会自动切换到对应的图标显示。

2、函数:SizeToContent

调用此函数,将位图按钮的大小调整为位图的大小。

三、使用方法

具体的使用方法如下:

// 在头文件中 声明一个CBitmapButton对象
CBitmapButton m_BitmapBtn; // 在初始化函数中初始化对象
m_BitmapBtn.LoadBitmaps(IDB_START_BITMAP); // bitmapID
m_BitmapBtn.SubclassDlgItem(IDC_BUTTON1, this);// 按钮ID
m_BitmapBtn.SizeToContent();

如上为基本用法,也可以在按钮的点击函数中动态修改图片,如下:

void CSplashDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if (true)
{
m_BitmapBtn.LoadBitmaps(XXXXXXXXXXX);
m_BitmapBtn.Invalidate();
}
else
{
m_BitmapBtn.LoadBitmaps(YYYYYYYYYYY);
m_BitmapBtn.Invalidate();
}
}

PS:调用Invalidate是为了让图像刷新。

MFC的CBitmapButton的使用指南的更多相关文章

  1. 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用

    本文是基于对话框的 博文基于 无幻 的博文为基础写的 http://blog.csdn.net/akof1314/article/details/4951836 笔者使用mfc撑死2个星期,不过这是有 ...

  2. Wtl之奇技淫巧篇:一、SDI如何居中显示视图

    Wtl的sdi应用,视图默认铺满框架的客户区.视图通常用modeless对话框,所有的界面元素都拥挤在左上角,这明显很丑陋.我们尝试让视图居中显示,保持原始大小,这是个很典型的问题,看似简单,诸多细节 ...

  3. wtl学习总结

    在windows平台,相比MFC,我更喜欢WTL,因其简洁漂亮.所以陆续花了一年的时间学习之,这里总结一下(在学习Wtl/Atl之前,最好是对WinApi编程有一定的了解). 安装 Wtl主页 htt ...

  4. 计算机电子书 2016 BiliDrive 备份

    下载方式 根据你的操作系统下载不同的 BiliDrive 二进制. 执行: bilidrive download <link> 链接 文档 链接 Go入门指南.epub (1.87 MB) ...

  5. MFC中的CString类使用方法指南

    MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...

  6. MFC学习指南大纲

    最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.

  7. MFC信号量使用指南

    DEMO程序:TestSemaphore_DEMO.rar 源代码:TestSemaphore_SRC.rar ---关键代码如下--- void CTestSemaphoreDlg::OnBnCli ...

  8. VC++/MFC(VC6)开发技术精品学习资料下载汇总

    工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...

  9. MFC 使用位图按钮,并且设置按钮的鼠标悬停效果

    系统环境:Windows 10软件环境:Visual C++ 2013 SP1本次目的:使用位图按钮,并且设置按钮的鼠标悬停效果 在用MFC开发时,界面是比较不好开发的一块.VC中自带了CBitmap ...

  10. MFC编程基础

    http://www.cnblogs.com/lzmfywz/archive/2012/03/15/2399403.html 一.MFC类库概述 MFC(Microsoft Foundation cl ...

随机推荐

  1. VSCode中设置用IPython运行Python代码

    VSCode中设置用IPython运行Python代码 在IPython中运行所选的代码: 在设置中, 找到python.terminal.launchArgs这一项, 设置为如下内容. " ...

  2. 如何用matlab求隐式函数的导数

    如何用matlab求隐式函数的导数 隐函数求导的例子 假设有一个圆 \(x^2+y^2=5\) , 要求在某个点上的切线的斜率. 我们可以把式\(x^2+y^2=5\)中的每一项对\(x\)求导, 可 ...

  3. 高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  4. yb课堂实战之轮播图接口引入本地缓存 《二十一》

    轮播图接口引入缓存 CacheKeyManager.java package net.ybclass.online_ybclass.config; /** * 缓存key管理类 */ public c ...

  5. javaweb使用gson工具使浏览器返回json数据

    1.什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: (2)序列化:对象序列化的最主要的用处就是在传递和保 ...

  6. 算法金 | 来了,pandas 2.0

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 210+/10000,内含 Pandas 是一个强大的数据分析库,广泛应用于科学 ...

  7. MySql(Innodb)事务隔离级别

    事务将数据库从一个一致状态转换至另外一个一致状态,若某个事务看到了另外一个事务在状态转换过程中的中间态数据(不一致状态),将有可能导致另外一个事务的操作基于一个不一致的数据库状态,进而数据库失去一致性 ...

  8. 经典面试题函数柯里化: add(1)(2)(3) = 6

    function currying() { const args = Array.prototype.slice.call(arguments); const inner = function () ...

  9. iOS开发基础135-Core Data

    Objective-C (OC) 中使用 Core Data 是iOS应用开发中管理模型层对象的一种有效工具.Core Data 使用 ORM (对象关系映射) 技术来抽象化和管理数据.这不仅可以节省 ...

  10. 《Programming from the Ground Up》阅读笔记:p88-p94

    <Programming from the Ground Up>学习第5天,p88-p94总结,总计7页. 一.技术总结 1.touppercase.s #PURPOSE: This pr ...