文件操作 - Windows资源文件的读取

=============== Windows资源文件的读取 ===============

Windows资源操作函数 12 LoadAccelerators  加载快捷键资源
 14 LoadBitmap      加载位图资源
 16 LoadCursor       加载光标资源
 18 LoadIcon       加载图标资源
 20 LoadMenu       加载菜单资源
 22 LoadString     加载字符串资源

Windows资源操作函数 29 FindResource    从指定模块中加载指定名称、类型的资源
 31 SizeofResource  获取资源数据的长度
 33 LoadResource    加载指定的资源至内存
 35 LockResource    锁定指定的资源,并返回指向资源数据的指针
 37 FreeResource   释放指定的资源
 39 我们通常加载某个资源的步骤如下所示:
 41 使用LoadLibrary()加载模块,或者获取当前应用程序的模块。
 43 调用FindResource()从指定模块中查找指定的资源,返回该资源的句柄。

 45 调用SizeofResource ()获取资源数据的长度。

 47 调用LoadResource()将资源加载至内存。

 49 调用LockResource()锁定资源,并返回指向资源数据的指针。

 51 通过数据指针操作数据。

 53 使用完毕,调用FreeResource()释放指定的资源。

 57 如下例程序演示了如何在当前程序中添加一个Word资源,并在运行时读取它,请读者仔细体验。
 58
 59 选择【Win32】→【Win32项目】→【控制台程序】命令,创建ResLoader。
 60
 61 打开资源视图,导入一个Word文档,资源类型定义为"WORD",资源名为IDR_WORD1,如图6-22所示。
 62
 64 (点击查看大图)图6-22  将一个Word文件当做资源导入
 65 编写主程序如下:
 66
 67 【程序 6-6】从资源中加载自定义数据
 68
 69 01  #include "stdafx.h"
 70 02  #include "ResLoader.h"
 71 03
 72 04  CWinApp theApp;
 73 05
 74 06  int _tmain()
 75 07  {
 76 08      int nRetCode = 0;
 77 09
 78 10      if (!AfxWinInit(::GetModuleHandle(NULL),NULL, ::GetCommandLine(), 0))
 80 11      {
 81 12          _tprintf(_T("错误: MFC 初始化失败\n"));
 82 13          nRetCode = 1;
 83 14      }
 84 15      else
 85 16      {
 86 17          HRSRC hRes = FindResource(theApp.m_hInstance, MAKEINTRESOURCE(IDR_WORD1), _T("WORD"));
 88 18          //获取长度
 89 19          DWORD len  = SizeofResource(theApp.m_hInstance, hRes);
 90 20          HGLOBAL hg = LoadResource(theApp.m_hInstance, hRes);
 91 21          LPVOID lp = (LPSTR)LockResource(hg);
 92 22
 93 23          //将资源中的内容保存至某个Word文件中
 94 24          CFile file;
 95 25          file.Open(_T("out.doc"), CFile::modeWrite | CFile::modeCreate);
 98 27          char * cp = (char *)lp;
 99 28          for(int i = 0; i < len; i++)
100 29          {
101 30              file.Write(cp++, 1);
102 31          }
103 32
104 33          CString filePath = file.GetFilePath();
105 34          file.Close();
106 35
107 36          //打开该文件
108 37          ShellExecute(NULL,_T("open"),filePath, NULL, NULL, SW_SHOW);
110 38          FreeResource(hg);
111 39      }
112 40
113 41      return nRetCode;  42   }
114 程序运行时,会自动在当前目录下生成一个out.doc文件,并自动启动Word打开它,如图6-23所示。
117 (点击查看大图)图6-23  运行结果
118 提示
119
120 注意ShellExecute()函数的使用,它用以执行一条系统命令,如打开某个文件。
121
122 光盘导读
123
124 该项目对应于光盘中的目录"\ch06\ResLoader"。

原文地址:http://book.51cto.com/art/200908/145793.htm

时间: 2024-12-15 01:44:02

文件操作 - Windows资源文件的读取的相关文章

一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)

各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了文件操作相关的系统调用.不过,没有举具体的例子.我们的主要内容就是举例子,因此,今天我们将通过具体的例子来说明如果使用系统调用来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: fd = open(file_name,flags_read); //打开文件 fd = open(file_name,fl

文件操作之打开文件

一.打开文件 obj = open('文件路径','打开文件方式') 打开文件方式有: r:只读方式 r+:相当于rw w:写入方式 w+:仍然等于w,无意义 a:追加方式 a+:仍然等于a,无意义 open()是Python的内建函数,提供了初始化输入/输出(I/O)的操作通用接口,成功打开一个文件后返回一个对象,否则发生IOError异常,file()是一个工厂函数,与open方法一样,可以互换,但是一般推荐用open(),因为open()是Python内建函数.file后期会被合并掉其他函

一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了标准库中与文件操作相关的函数.不过,限于时间的原因,没有举具体的例子.还是那句老话,只说不练,不是我们的风格.因此,今天我们将通过具体的例子来说明如何使用文件指针来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: p_file = fopen(file_name,"w"); //打开文件 re

关于file文件操作的头文件 【LINUX】 (转载)

转自:http://blog.csdn.net/figo77ll/article/details/3156052 Linux下如果要对文件进行读取访问,需要包含至少以下两个头文件: #inlcude <unistd.h> #inlcude <fcntl.h> 其中fcntl.h包含了create和open命令,unistd包含了其他的诸如read, write, close等命令.很奇怪为什么不把fcntl的功能直接放到unistd里面呢.. 如果要对STDIN,STDOUT进行“

文件操作1创建文件

1.[[email protected] ]# vi list     #如果testfile不存在,则vi会自动创建一个名为testfile的文件,并在Vi打开该文件等待用户输入内容. 2.[[email protected] ]# ls -l >listfile #利用重定向,将ls -l 的执行结果输出到新文件listfile中,也可使用cat,more,less或其它命令结合重向运算符>来生成新文件 3.[[email protected] ]# cp file  file2   #复

PHP 文件操作类(创建文件并写入) 生成日志

<?php /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt'; //默认值文件 public $mode = 'a'; //默认追加写 public $content = '默认值:空'; //默认内容是 空 public function addlog($path = null, $mode = null, $content = null) { //判断写入的

java文件操作之移动文件到指定的目录

原文:java文件操作之移动文件到指定的目录 代码下载地址:http://www.zuidaima.com/share/1550463261166592.htm java文件操作之移动文件到指定的目录,通过renameTo方法实现,而非copy后delete package com.zuidaima.util.file; import java.io.File; /** * 移动文件到指定的目录 * * @author www.zuidaima.com * */ public class Mov

Qt之Windows资源文件(.rc文件)

简述 在Windows下使用Qt时,通常会用到Windows的资源文件 - 为exe设置信息,其中包括:文件说明.产品名称.产品版本.版权等信息... 由于是Windows平台相关的东西,Qt助手中对于rc文件几乎没有任何介绍(在Setting the Application Icon一文中简单提到). 简述 资源信息 效果 实现 图标 参数 示例 VERSIONINFO 格式化VERSIONINFO 参数 资源信息 效果 实现 首先,我们添加一个名为version.h的头文件,包含资源信息.

PHP中文件操作(1)--打开/读取文件

1.打开文件(fopen) 语法:resource  $fp=fopen(文件地址,模式),返回的是文件指针(file pointer) 模式 含义 r 只读 w 写(清空重写) a 追加 $fp = fopen('./aa.txt', "r"); //只读 $fp = fopen('./aa.txt', "w"); //写(清空重写) $fp = fopen('./aa.txt', "a"); //追加 2.读文件(fread ,file_ge