1.新建基于对话框工程,放置一个按钮,可以适当调整大小,设置其Owner Draw属性为TRUE,右键为按钮添加变量,改变其变量类型为CBitmapButton,按确定完成;

2.初始化工作,在对话框的OnInitDialog()函数里面添加以下代码: m_btButton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4);//载入

m_btButton.SizeToContent();  //使按钮适应图片大小

SetTimer(1,20,NULL);

3.为控制位图按钮的可用、不可用添加代码,这是为了验证第四种状态的按钮:

void CTestDlg::OnBnClickedButton2()

{

m_btButton.EnableWindow(0);

}

void CTestDlg::OnBnClickedButton3()

{

m_btButton.EnableWindow();

}

4.步骤五:到这里已经完成了位图按钮的实现,编译运行可以看到结果。但是鼠标滑过的时候,按钮并不会感应到焦点的存在。这里用定时器捕获焦点在按钮上,并且改变此时的按钮状体为第三种图片。首先为窗体添加OnTimer()事件,在OnTimer()函数里面填写如下代码:

void CTestDlg::OnTimer(UINT_PTR nIDEvent)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

if (1==nIDEvent)

{

POINT p;

GetCursorPos(&p);

CWnd *hwnd;

hwnd=WindowFromPoint(p);   //检索窗口中包含指定的点;点必须指定屏幕坐标在屏幕上的一个点。

CWnd *hwnd2=GetDlgItem(IDC_BUTTON1);

if (hwnd2 == hwnd)         //如果鼠标在按钮上

{

if (GetFocus()!=hwnd2)        //如果按钮无焦点,那么设置焦点

hwnd2->SetFocus() ;

}

else          //如果鼠标不在按钮上;

{

if (GetFocus() == hwnd2 )                  //如果按钮有焦点,那么去焦点;

GetDlgItem(IDC_BUTTON2)->SetFocus();  //这里的IDC_BUTTON2为你想跳转到的控件ID号

}

}

CDialog::OnTimer(nIDEvent);

}

CBitmapButton位图按钮简明教程相关推荐

  1. VC 位图按钮CBitmapButton的使用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...

  2. Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐) 一.手机游戏编写基础 1.手机游戏设计 ...

  3. VB编写DirectX简明教程

    VB编写DirectX简明教程 随这计算机软硬件的发展,计算机不在只是一个简单的计算工具而成为了一个可以玩游戏.进行多媒体操作的多功能平台.为了编写高性能的游戏和应用程序,我们需要绕过操作系统提供的A ...

  4. CGIC简明教程(转摘)

    CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库"CGIC"完成Web开发的各种要求. *********************************     基础 ...

  5. MFC/VC++中怎样设置位图按钮并且位图不会覆盖文字——–位图按钮

    1:第一次尝试 设置    IDC_BUTTON3按钮风格的bitmap为true 在OnInitialDilog中: CButton* cbpTest = NULL; HINSTANCE hInst ...

  6. duilib入门简明教程 -- 部分bug (11) (转)

    原文转自:http://www.cnblogs.com/Alberl/p/3344886.html 一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完 ...

  7. mobx中跟新了数据视图没变化_【第1781期】MobX 简明教程

    前言 SEEConf,2020年1月4号杭州见,C位抢票见文章末尾.今日早读文章由腾讯@whinc投稿分享. 正文从这开始-- 导读:MobX 是一个优秀的响应式状态管理库,在流行的状态管理库 Red ...

  8. 用VC++绘制位图按钮

    MFC的CButton类提供Windows按钮控件的功能,从CButton类派生的CBitmapButton类封装了自绘制按钮的功能,使得程序员可以通过在按钮上绘制位图并为这些位图实例化类CBitma ...

  9. Windows Server 2019安装OpenSSH Server简明教程

    MS酋长之前已经介绍过Windows10已原生支持OpenSSH远程管理功能,那么作为服务器专用的Windows Server 2019更少不了要内置OpenSSH Server组件了.只不过Open ...

最新文章

  1. 优达学城《DeepLearning》项目1:预测每日自行车租赁客流量
  2. 等待队列wait queue
  3. C#经典名著:《C#入门经典》(第4版)
  4. scala spark 数据对比_IT大牛耗时三个月总结出大数据领域学习路线,网友评论:炸锅了...
  5. html5 webview,HTML5+学习历程之webview经典案例
  6. nedc和epa续航里程什么意思_NEDC、WLTP和EPA续航里程哪种最真实,用车注意事项都有什么...
  7. LeetCode 57. 插入区间(一次遍历)
  8. 前端架构设计1:代码核心
  9. java使用poi实现大数据量导出为EXCEL
  10. NUC1429 WERTYU【输入输出+水题】
  11. A simple BBS demo including(CRUD) - 1
  12. ASP.NET MVC+EF框架+EasyUI实现权限管理系列
  13. Check Point R80.10 SmartConsole汉化生成中文报表
  14. 如何看懂财务报表|介绍
  15. 江苏小高考计算机知识点,江苏文科小高考哪几门 考试内容是什么
  16. C-11 Problem H: 开宝箱2
  17. 配置微信小程序添加企业微信为好友的组件
  18. 关于hcaptcha (vm wasm ob)三合一
  19. linux amd显卡双屏,Ubuntu14.04安装AMD显卡驱动双屏显示器完全解决方案
  20. 运维专家写给年轻运维的6条人生忠告

热门文章

  1. excel转html放在tomcat,Excel转web!把excel在线打开??
  2. java xml字符串提取元素,如何从Java中将子元素从XML提取到字符串?
  3. hadoop读取mysql数据_Pyspark连接mysql、hive、hdfs 实例展示
  4. Tensorflow get_variable和Varialbe的区别
  5. 使用Apache Common Daemon实现Windows服务
  6. 修改Linux的基本配置(如主机名、ip等)
  7. WindowsPhone7开发简单豆瓣网应用程序之界面设计
  8. SAS实现四十年连续增长,2015年全球营收达31.6亿美元
  9. 【算法】K-Means聚类算法(k-平均或k-均值)
  10. 2016网络安全***赛记录