📄 resource.h
字号:
/***************************************************************************** ------------ 子系统名称: 界面资源管理器* RESOURCE.H* ------------ 模块名称 : 资源索引及IO管理程序****************************************************************************/#ifndef _RESOURCE_H#define _RESOURCE_H#include "typedef.h"#include "strtbl.h"#include "menu.h"#include "dialog.h"/* 资源类型定义 Resource type define */#define RT_STRTBL 1 /* 窗口 */#define RT_MENU 2 /* 菜单 */#define RT_DIALOG 3 /* 对话框 *//* 资源错误信息标识号 Resource error ID */#define ERR_RES_INVALIDFILE -1010 /* 非法的资源文件 */#define ERR_RES_INVALIDID -1011 /* 无效的资源标识号 */#define ERR_RES_FULL -1012 /* 资源索引表满 *//* 资源结构定义 Resource structure define */typedef struct tagResource{ short nRESID; /* 资源识别号 */ short nType; /* 资源类型 */ void *pRES; /* 资源缓冲区地址 */ DWORD lRESOffset; /* 资源数据在文件中的绝对位置 */ DWORD lNextOffset; /* 下一索引在文件中的绝对位置 */} RESOURCE;typedef RESOURCE * PRESOURCE;/* 资源文件头结构定义 Resource file header structure define */#define MAXL_VERTEXT 20typedef struct tagRESFileHead{ char pVersion[MAXL_VERTEXT]; /* 版本信息 */ short nCount; /* 资源总数 */ BYTE nAddNum; /* 累加和 */} RESFILEHEAD;typedef RESFILEHEAD * PRESFILEHEAD;/* 全局变量定义 */extern FILE * pfResFile; /* 资源文件指针 */extern RESFILEHEAD rfhRESFileHead; /* 资源文件头 */extern PRESOURCE prRESTable; /* 资源索引表 */extern char pRESVersion[MAXL_VERTEXT]; /* 标准版本信息 *//**************************************************************************** 接 口 函 数 原 型***************************************************************************//***************************************************************************** 函数原型: NewResource ( PRESOURCE *prNew, short nCount )** 功 能: 创建 nCount 个资源索引项** 编程人员: Zhu haibin** 编码时间: 1994/09/13** 修改时间:** 入口参数: PRESOURCE prNew -- 资源项指针** 出口参数: OK 调用成功* ERR_NOMEMORY 没有足够的内存** 实现算法: 调用 malloc 申请内存** 上层调用:** 下层调用:****************************************************************************/extern short NewResource ( PRESOURCE *pprNew, short nCount );/***************************************************************************** 函数原型: FreeResource ( short nRESID )** 功 能: 释放一个资源** 编程人员: Zhu haibin** 编码时间: 1994/09/13** 修改时间:** 入口参数: PRESOURCE presTemp -- 资源项指针** 出口参数: OK 调用成功* ERR_RES_INVALIDID 无效的资源标识号** 实现算法: 1. 查找指定的标识号* 2. 释放所对应的资源** 上层调用:** 下层调用: FreeMenu* FreeDialog****************************************************************************/extern short FreeResource ( short nRESID );/***************************************************************************** 函数原型: short CreatRESFile ( char * pFileName )** 功 能: 创建一个资源文件** 编程人员: Zhu haibin** 编码时间: 1994/09/14** 修改时间:** 入口参数: char *pFileName -- 资源文件名** 出口参数: OK 调用成功* ERR_CFILE 创建文件错** 实现算法: 调用 fopen 创建文件** 上层调用:** 下层调用: 无****************************************************************************/extern short CreatRESFile ( char * pFileName );/***************************************************************************** 函数原型: OpenRESFile ( char *pFileName )** 功 能: 打开一个已存在的资源文件, 检查其合法性, 读入资源索引** 编程人员: Zhu haibin** 编码时间: 1994/09/14** 修改时间:** 入口参数: char *pFileName -- 资源文件名** 出口参数: OK 调用成功* ERR_OFILE 打开文件失败* ERR_RFILE 读文件失败** 实现算法: 1. 以只读方式打开文件* 2. 读入文件头并检查其合法性* 3. 读入资源索引** 上层调用:** 下层调用: NewResource****************************************************************************/extern short OpenRESFile ( char *pFileName );/***************************************************************************** 函数原型: CloseRESFile ( BOOL nWriteHead )** 功 能: 关闭资源文件** 编程人员: Zhu haibin** 编码时间: 1994/09/14** 修改时间:** 入口参数: BOOL nWriteHead -- 是否需要重新写入文件头** 出口参数: OK 调用成功* ERR_WFILE 写文件失败** 实现算法: 1. 如果要重写文件头:* A 调整文件, 使文件头部空出文件头和索引表的空间* B 计算累加和* C 写入文件头* 2. 调用 fclose 关闭文件** 上层调用:** 下层调用: 无****************************************************************************/extern short CloseRESFile ( BOOL nWriteHead );/***************************************************************************** 函数原型: LoadResource ( short nRESID, void **ppRES )** 功 能: 从资源文件中读取标识号为 nRESID 的资源** 编程人员: Zhu haibin** 编码时间: 1994/09/15** 修改时间:** 入口参数: short nRESID 资源标识号* void **ppRES 资源地址** 出口参数: OK 调用成功, 资源指针返回在 ppRES 中* ERR_RES_INVALIDID 无效的资源识别号* ERR_RFILE 读文件失败* ERR_NOMEMORY 没有足够的内存** 实现算法: 1. 在资源索引表中查找指定的识别号 nRESID* 2. 读出资源** 上层调用:** 下层调用: 无****************************************************************************/extern short LoadResource ( short nRESID, void **ppRES );/***************************************************************************** 函数原型: AppendResource ( PRESOURCE prTemp )** 功 能: 向资源文件中追加一个资源** 编程人员: Zhu haibin** 编码时间: 1994/09/15** 修改时间:** 入口参数: PRESOURCE prTemp -- 资源指针** 出口参数: OK 调用成功* ERR_WFILE 写文件失败** 实现算法: 1. 写入资源索引项* 2. 写入资源数据** 上层调用:** 下层调用: 无****************************************************************************/extern short AppendResource ( PRESOURCE prTemp );/***************************************************************************** 函数原型: LoadStrTblResource ( void )** 功 能: 装入所有字符串表资源** 编程人员: Zhu haibin** 编码时间: 1994/10/05** 修改时间:** 入口参数: PRESOURCE prTemp -- 资源指针** 出口参数: OK 调用成功* ERR_WFILE 写文件失败** 实现算法: 1. 写入资源索引项* 2. 写入资源数据** 上层调用:** 下层调用: 无****************************************************************************/extern short LoadStrTblResource ( void );/***************************************************************************** 函数原型: LoadString ( short nID, char *pBuf, short nBufSize )** 功 能: 从字符串表资源中取出指定字符串** 编程人员: Zhu haibin** 编码时间: 1994/10/05** 修改时间:** 入口参数: short nID -- 字符串标识号* char *pBuf -- 字符串缓冲区* short nBufSize -- 字符串缓冲区长度** 出口参数: 总为 OK** 实现算法:** 上层调用: FreeResource** 下层调用: 无****************************************************************************/extern short LoadString ( short nID, char *pBuf, short nBufSize );#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -