可以使用两种方法导入图标文件,一种是从项目资源中导入,另一种是从磁盘中导入。

1 从项目资源中导入图标

使用该方法导入图标文件时,必须先将图标文件导入到项目资源中。

1.1 图标文件资源的导入

选择“资源视图”选项卡,之后选择资源视图树型控件的“XXX->XXX.rc->Icon”,其中XXX表示项目名称,如图1所示。

图1 选择Icon资源文件夹

接下来在右键菜单中选择“添加资源”,之后在弹出的“添加资源”对话框中的“资源类型”中选择“Icon”,之后选择“导入”,如图2所示。

图2 导入图标文件

在弹出的“导入图标”对话框中,将文件类型选择为“图标文件(*.ico)”,之后选择要导入的图标,最后点击“打开”按键,导入该图标文件,如图3所示。此时,在“资源视图”的“Icon”文件夹中,就会出现新导入的图标文件。

1.2 通过CWinApp::LoadIcon()函数获取图标文件句柄

该函数的格式为

HICON LoadIcon(UINT nIDResource) const;

其中,参数nIDResource 是项目图标文件资源的 ID ;返回值是该图标文件资源的句柄。

HICON hIcon = AfxGetApp()->LoadIconW(IDI_ICON1); 

图3 导入选中的图标文件

其中,AfxGetApp()函数是MFC提供的全局函数,该函数的作用是返回指向应用程序对象的指针,即CWinApp类的指针。CWinApp类的指针调用该类的LoadIcon()函数导入图标文件,IDI_ICON1是在“1.1图标文件资源的导入”中导入的图标文件,该图标的句柄保存在LoadIcon()函数的返回值,即hIcon中。

1.2 通过LoadImage()函数获取图标文件句柄

LoadImage()是Windows API函数,通过该函数也可以获取项目中图标资源的句柄。LoadImage()函数的格式是

HANDLE LoadImage(      
    HINSTANCE hinst,

LPCTSTR lpszName,

UINT uType,

int cxDesired,

int cyDesired,

UINT fuLoad

);

其中,参数hinst表示包含该图像资源的模块的句柄;lpszName表示图像的名称;uType指定了图像的类型,通过该参数可以指定导入的图像类型是图标文件;cxDesired和cyDesired指定了要导入图标资源的宽度和高度;fuLoad是导入图像时的标志。LoadImage()函数的返回值是导入图像的句柄。通过以下代码可以获取图标资源的句柄:

HICON hIcon1 = (HICON)::LoadImage(

AfxGetInstanceHandle()

, MAKEINTRESOURCE(IDI_ICON1)

, IMAGE_ICON

, 0

, 0

, LR_DEFAULTCOLOR);

其中,AfxGetInstanceHandle()是MFC的全局函数,该函数的作用是返回标识当前应用程序实例的句柄,即HINSTANCE;MAKEINTRESOURCE()宏的作用是将一个整型资源ID转换为LPTSTR数据类型的ID,IDI_ICON1是在“1.1图标文件资源的导入”中导入的图标文件ID;IMAGE_ICON指定了导入的图像类型是图标资源;第4和第5个参数均为0,表示导入的图标文件使用原始的宽度和高度;LR_DEFAULTCOLOR表示图标文件使用默认的颜色。导入的图标文件句柄保存在hIcon1中。

2 从磁盘中导入图标文件

在“1.2通过LoadImage()函数获取图标文件句柄”中使用了Windows API函数LoadImage()从项目的图标文件资源中导入了图标文件句柄。通过该函数也可以将磁盘中的图标文件文件导入到程序中。此时,需要将LoadImage()函数的第一个参数设置为NULL,第二个参数指定图标文件文件的绝对路径,最后一个参数设置为LR_LOADFROMFILE即可。

HICON hIcon2 = (HICON)::LoadImage(
NULL
, _T("C:\\bing.ico")
, IMAGE_ICON
, 0
, 0
, LR_LOADFROMFILE
);

以上代码的作用是将C 盘根目录下的 bing.ico 图标文件文件导入到程序中,并将其句柄保存到变量 hIcon2 中。

MFC导入图标文件的方法相关推荐

  1. 可视化mysql怎么导入sql文件_使用navicat导入sql文件的方法步骤

    一.打开navicat,打开连接,右击连接名(如果新建连接,需要使用对应数据库的ip地址和密码,本机的是地址localhost,密码是自己mysql数据库的密码),选择新建数据库,数据库名要和想要导入 ...

  2. Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

    本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...

  3. 导入Excel文件的方法

    我们在做一些项目的时候通常会遇到有导入文件的这种需求,下面我给大家分享一下导入Excel文件的方法. 首先我们得准备一个模板,下图就是一个简单的EX导入模板, 下图就是一个导入模板, 我们先把导入模板 ...

  4. linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

  5. CentOS部署JAVA程序、安装Tomcat以及安装导入mysql文件的方法

    注意:由于流程太过于繁杂,且坑多,这里只保留关键步骤,具体小问题百度! ________________________ 先进入CentOS6.8图形化界面(如阿里云没有默认的图形化界面,自己去安装h ...

  6. MATLAB导入mat文件的方法

    mat文件是MATLAB数据储存的标准化格式文件,导入后类似于Excel表格 首先,把工作目录更改为包括想要导入的mat文件的目录.点击图片箭头位置更改目录 所要导入的文件就显示在当前目录中了 方法一 ...

  7. YII使用PHPExcel导入Excel文件的方法

    1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php [php] vie ...

  8. MFC 更换图标文件但EXE图标没改变

    win10系统,VS2010 修改工程图标文件重新编译后,状态栏和程序窗口图标都改变了,但是 .exe 文件的图标还是以前的 解决方案:重启电脑或者拷贝 .exe 文件到其他地方(删除图标缓存文件ic ...

  9. mysql/sqlyog导入txt文件的方法

    今天尝试着用sqlyog向mysql中导入数据,用了以下几种: 一.sql载入 格式: LOAD DATA LOCAL INFILE '文件路径' INTO TABLE 表名 FIELDS TERMI ...

  10. cass如何导入tif格式_CASS导入坐标文件的方法,一般人我不告诉他!-DAT文件

    刚入门开始学习CASS的小伙伴们,想用CASS来绘制地形图.发现"数据输入"这一步就停滞了.各种仪器采集的数据,导入CASS时报错,怎么解决?数据输入,老司机们各有绝招. 地形图绘 ...

最新文章

  1. 人才招聘丨 清华大学精准医学研究院招聘启事
  2. mysql 安装dso命令_LAMP环境搭建
  3. Hadoop2配置详解
  4. 腾讯面试:滑动窗口最大值
  5. 镗孔指令g76格式_钻孔、镗孔、攻丝,11个固定循环详解!
  6. 白话Elasticsearch71-ES生产集群部署之各个节点以daemon模式运行以及优雅关闭
  7. linux shell for while if case break continue echo test 及算术运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符
  8. appium+python自动化项目实战(二):项目工程结构
  9. 数理统计-大厂笔试题
  10. 利用正则表达式 替换字符串中多个 URL
  11. WebShell -- 开启3389服务
  12. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid
  13. 软件架构师的12项修炼——关系技能修炼(2)
  14. EMCP 物联网云平台短信报警使用说明
  15. 01-css3动画之过渡详解 以及 实战纯css打造手风琴图片特效
  16. Git之(三)Git中常用命令——分支管理
  17. elasticsearch for windows
  18. origin两个图层图例合并_科学网—Origin双坐标画法以及图例添加之方法一(以origin8.0为例) - 蔡延江的博文...
  19. android图片异步加载图片,Android 异步加载图片分析总结
  20. HTTP 缓存详细说明

热门文章

  1. [休闲]GDC China 2007上海中国游戏开发者大会
  2. C#中的线程池使用方法
  3. 如何用windows xp自带的画图工具画箭头
  4. pt100铂电阻型号_铂热电阻型号(热电阻型号有什么表示)
  5. 计算机专业女生网名,微信名字大全女生_女孩微信网名大全
  6. 关于win8.1系统的网络用一段时间就会受限的原因及解决方法
  7. Android 蓝牙驱动专题分析(2)--- 蓝牙驱动代码流程、kernel dump、tombstone问题分析
  8. 使用Java播放wav音乐
  9. 数据分析基础-假设检验原理详解
  10. 可行性研究报告计算机,计算机软件设计师:软件可行性研究报告[1]