本文是基于对话框的

博文基于 无幻 的博文为基础写的 http://blog.csdn.net/akof1314/article/details/4951836

笔者使用mfc撑死2个星期,不过这是有c++基础的前提下接触mfc,昨天看到了网上对qt creator的评论,感觉好高大上,回去试了一下后发现,qt需要mfc的基础,若是直接接触qt的话会比较难,毕竟mfc是在vs的平台下,大家学起来会比较顺手。

回到正题,今天研究了下怎么使用mfc中的位图按键,发现实现方法挺多,但是对于小白来说,很多作者认为简单的都会略过,恰巧那些简单的就是我不会的,结果又看不懂。除了mfc自有的CBitmapButton外,在网上还看到有关于CButtonST的使用,应该是会比CBitmapButton简单,笔者看的是CBitmapButton,那这里就不讲CButtonST。

两位csdn博主对CButtonST使用的链接:

DoubleLi:  http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html

wqvbjhc:  http://blog.csdn.net/wqvbjhc/article/details/12580669

首先 会用到以下CBitmapButton类的函数

LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE);

//载入图片 IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE 这四个均为bitmapID

BOOL LoadBitmaps( 
LPCTSTR lpszBitmapResource, 
LPCTSTR lpszBitmapResourceSel = NULL, 
LPCTSTR lpszBitmapResourceFocus = NULL, 
LPCTSTR lpszBitmapResourceDisabled = NULL 
); 
bitmap的载入

回到资源视图就可以看到  资源视图打开的方法:视图-》其他窗口-》资源视图


SubclassDlgItem(按钮ID, this);//关联按钮

SizeToContent();//让按钮随图片大小变化

GetDlgItem(按钮ID)->EnableWindow(FALSE);//开启按钮的禁止状态

现在开始做

1.在对话框出拖入一个按钮,,其ID为IDC_BUTTON1

2.设置按钮属性中的Owner Draw为TRUE

3.在::OnInitDialog();前添加   CBitmapButton m_btnX1;//必须放在函数外面才能正常实现

4.导入按钮位图,这里四幅图大小要一致,以下是四种状体的按钮,若读者要实验这次的设计的话,可以右键另存为,然后用“画图”把png格式的另存为bmp格式的。在资源视图,右键“添加资源”,“导入”以下图片:

5.初始化工作,在对话框的OnInitDialog()函数里面添加以下代码:

m_btnX1.LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE);//
// 也可以只加一个ID资源;
m_btnX1.SubclassDlgItem(IDC_BUTTON_TEST2, this);
m_btnX1.SizeToContent();

到这里已经完成了位图按钮的实现,编译运行可以看到结果。

其实这个时候你能看到后三幅图的的效果,为什disable的看不到,是因为这个禁止的状态你没有打开,打开需要

GetDlgItem(按钮ID)->EnableWindow(FALSE);  //为false是是开启禁止状态,为true时则是关闭状态

这时候四个图标你都能看到了。

如果你想做鼠标移动到按钮上,按钮会变其他图案的效果,请看 无幻 http://blog.csdn.net/akof1314/article/details/4951836/;

本文用到的资料:  只想说一句 csdn太强大了。

http://blog.csdn.net/leixiaohua1020/article/details/12753967
http://blog.csdn.net/akof1314/article/details/4951836/
http://bbs.csdn.net/topics/100184465
https://msdn.microsoft.com/en-us/library/6y6acs49(v=vs.120).aspx

【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用的更多相关文章

  1. MFC 与Excel文件的交互操作

    假日快要结束了.带着沉重的心情写下之前关于MFC与Excel文件交互的总结. 因为VS的版本号不同可能在操作上有些差异.所以在此指明下本篇文章的project环境为VS2013,也建议大家用最新的. ...

  2. stdafx.h、stdafx.cpp是干什么用的?为什么我的每一个cpp文件都必须包含stdafx.h? Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编

    sstdafx.h.stdafx.cpp是干什么用的?为什么我的每一个cpp文件都必须包含stdafx.h? Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要 ...

  3. VS2010 MFC中 创建文件夹及文件判空的方法

    1. MFC中 创建文件夹的方法如下: CString strFolderPath = "./Output"; //判断路径是否存在 if(!PathIsDirectory(str ...

  4. MFC打开/保存文件对话框:CFileDialog

    MFC打开/保存文件对话框:CFileDialog CFileDialog   文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDial ...

  5. MFC原理第一讲.MFC的本质.以及手工编写MFC的程序

    MFC原理第一讲.MFC的本质.以及手工编写MFC的程序 PS: 这个博客属于复习知识.从头开始讲解. 在写这篇博客之前.已经写了3篇MFC的本质了.不过掌握知识点太多.所以从简重新开始. 一丶MFC ...

  6. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  7. VS2010/MFC对话框:文件对话框

    文件对话框 上一讲介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中 ...

  8. MFC关于.rc文件 .rc2文件

    .rc文件和.rc2文件 c和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的 ...

  9. MFC读取XML文件并解析

    现在经常会对XML文件进行操作,怎么在MFC下去读和解析XML文件呢?直接上代码: 首先得等在stdafx.h中加入这句,以引入MSXML命名空间 #import <msxml3.dll> ...

随机推荐

  1. springmvc 需要用到的核心jar包

    aopbeanscontextcoreexpressionwebwebmvc

  2. Codeforces - 55D Beautiful numbers (数位dp+数论)

    题意:求[L,R](1<=L<=R<=9e18)区间中所有能被自己数位上的非零数整除的数的个数 分析:丛数据量可以分析出是用数位dp求解,区间个数可以转化为sum(R)-sum(L- ...

  3. Generative model 和Discriminative model

    学习音乐自动标注过程中设计了有关分类型模型和生成型模型的东西,特地查了相关资料,在这里汇总. http://blog.sina.com.cn/s/blog_a18c98e50101058u.html ...

  4. hadoop17---RPC和Socket的区别

    RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源.RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台 ...

  5. Django CRM 数据库增删改查

    原文链接 http://www.cnblogs.com/yangmv/p/5327477.html

  6. 使用Python实现基于图像识别的iOS自动化测试

    相对于Android来说,iOS比较封闭.这一点,在设计和评估自动化测试方案的时候感觉尤其强烈.iOS平台上没有特别好用的自动化测试工具.苹果针对iOS提供了UI Automation的Instrum ...

  7. GIT使用—一些概念

    (1)Git版本库(repository) 一个简单的数据库,包括所有用来维护与管理项目的修订版本和历史的信息. Git维护两个主要的数据结构: 对象库(object store)-在复制操作时能进行 ...

  8. git报错--RPC failed; curl 18 transfer closed with outstanding read data remaining

    遇到的问题一: error: RPC failed; curl 18 transfer closed with outstanding read data remaining         fata ...

  9. Java多线程基础知识总结笔记

    本篇笔记记录一些在Java多线程编程中常见的关键字,比较简单和基础的就不写太详细了. 一.Thread类(其实也是应用了Runnable接口)和Runnable接口(只有一个run方法,应用该类必须重 ...

  10. Oracle 事务处理

    事务的四大特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 2.一致性(Consistency) 一致性是指数据库在事务操作前和事 ...