上一节讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control。我们可以在界面某个位置放入图片控件,显示图片以美化界面。

  图片控件简介

  图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。

  图片控件静态和动态加载图片

  下面为大家演示如何为图片控件静态和动态加载位图图片。

  1、图片控件静态加载图片

  (1)创建一个基于对话框的MFC工程,名称设置为"MFCPictureControlDemo"。

  (2)准备一张Bitmap图片,名称设为“view.bmp”,放到工程的res文件夹中,res文件夹路径...\MFCPictureControlDemo\MFCPictureControlDemo\res。

  (3)在Resource View中的"MFCPictureControlDemo.rc*"节点上点右键,选择“Add Resource...”,弹出"Add Resource"对话框:

  然后在左侧的"Resource Type"中选择“Bitmap”,点按钮“Import”,显示一个文件对话框,我们选择res文件夹中的view.bmp图片文件,导入成功后会在Resource View的MFCPictureControlDemo.rc*节点下出现一个新的子节点"Bitmap",而在“Bitmap”节点下可以看到刚添加的位图资源IDB_BITMAP1,这里的默认ID就不修改了。

  (4)在自动生成的对话框模板IDD_MFCPICTURECONTROLDEMO_DIALOG中,删除“TODO:Place dialog controls here.”静态文本控件、“确定”按钮和“取消”按钮。添加一个Picture Control控件,在图片控件的属性页中有一个Type属性,Type属性下拉列表中有8中类型,下面分别介绍下:

  Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定

  Etched Horz:显示一条横分割线

  Etched Vert:显示一条竖分割线

  Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定

  Icon:显示一个图标(Icon),图标通过Image下拉列表来设置图标资源ID

  Bitmap:显示一个位图(Bitmap),位图通过Iamge下拉列表来设置位图资源ID

  Enhanced Metafile:显示一个加强的元数据文件(Metafile)

  Owner Draw:自绘

  因为我们要加载的是位图图片,所以Type属性选择Bitmap。

  (5)在图片控件的Image属性的下拉列表中选择(3)中导入的位图IDB_BITMAP1。

  (6)编译运行程序,弹出结果对话框,如下图所示:

  2、图片控件动态加载图片

  以上讲的是静态加载图片的方法,下面接着讲动态加载图片的方法。程序依然沿用上面的工程。步骤如下:

  (1)将上面添加的图片控件的Image属性IDB_BITMAP1清空,Type属性不变。

  (2)修改图片控件的ID为IDC_PIC_STATIC,然后为其添加CStatic类型空间变量m_pictureControl。(若不修改ID则无法为其添加控件变量)

  (3)在对话框下方添加一按钮控件,Caption属性改为“加载图片”,ID设为IDC_LOAD_PIC_BUTTON。

  (4)为按钮IDC_LOAD_PIC_BUTTON添加点击消息的处理函数CMFCPictureControlDemo::OnBnClickedLoadPicButton(),然后修改此函数的函数实现如下:

C++代码:

void CMFCPictureControlDemoDlg::OnBnClickedLoadPicButton()
{
// TODO: 在此添加控件通知处理程序代码
CBitmap bitmap; // CBitmap对象,用于加载位图
HBITMAP hBmp; // 保存CBitmap加载的位图的句柄 bitmap.LoadBitmapW(IDB_BITMAP1); // 将位图IDB_BITMAP1加载到bitmap
hBmp = (HBITMAP)bitmap.GetSafeHandle(); // 获取bitmap加载位图的句柄
m_pictureControl.SetBitmap(hBmp); // 设置图片空间m_pictureControl的位图为IDB_BITMAP1
}

  (5)编译运行程序,弹出结果对话框,点击按钮“加载图片”,结果如下:

  图片控件Picture Control的内容就讲到这里了。

MFC编程入门之二十七(常用控件:图片控件PictureControl)的更多相关文章

  1. VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)

    上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文 ...

  2. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html   上一讲中讲了VS20 ...

  3. VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)

    前面一节中,鸡啄米讲了图片控件Picture Control,本节为大家详解列表视图控件List Control的使用.      列表视图控件简介 列表视图控件List Control同样比较常见, ...

  4. MFC编程入门之二十八(常用控件:列表视图控件List Control上)

    前面一节中,讲了图片控件Picture Control,本节为大家详解列表视图控件List Control的使用. 列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符 ...

  5. VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)

    上一节VS2010/MFC编程入门教程中鸡啄米讲了按钮控件Button.Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件 ...

  6. VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)

    前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提 ...

  7. MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的侠义的 ...

  8. MFC编程入门之二十(常用控件:静态文本框)

    上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...

  9. VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...

随机推荐

  1. C++之路进阶codevs1269(匈牙利游戏)

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description ...

  2. WebSocket///////////////////////z

    作者:Ovear链接:http://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有,转载请联系作者获得授权. 一.WebSoc ...

  3. 。。。IO流的学习之一。。。

    文件写入流FileWriter的使用: import static org.junit.Assert.*; import java.io.File; import java.io.FileWriter ...

  4. 1047: 小A的计算器

    1047: 小A的计算器 时间限制: 1 Sec  内存限制: 128 MB提交: 124  解决: 105[提交][状态][讨论版] 题目描述 以往的操作系统内部的数据表示都是二进制方式,小A新写了 ...

  5. Pyton 模拟Post登录

    import sys import urlib.parse import urllib.request import http.cookiejar import random import math ...

  6. CSS颜色代码

    颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光源进行设置的最低值可以是 0(十六进制 00).最高值是 255(十六进制 FF).从 0 到 25 ...

  7. sp_MSforeachtable 与 sp_MSforeachdb

    在MSSQL里有许多不公开的系统存储过程,其中可能常用的sp_MSforeachtable和sp_MSforeachdb有这2个.分别用于遍历某数据库的每个用户表.每个数据库. sp_MSforeac ...

  8. event.keyCode ,event.which ,event.charCode (2016-12-27 16:17:16)

    javascript判断是否按回车键 <input id="chatMsg" name="chatMsg" type="text" s ...

  9. 让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)

    把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错: Invocation of init method faile ...

  10. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...