• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

有空的朋友帮我测测这个dll,谢谢了先

rockswang 2001-07-17 07:26:03
请到 http://wannaplay.51.net/products.html 下载。
我只简单的测试过,另外能否被Delphi, CB正常使用还有待证实。
希望各位多提意见。希望再增加些什么功能也一定告诉我。我希望它最终能真正称得上“通用”。
:)

通用归档API集 (General Purpose Archive Library) Ver 0.5

有以下几个特点:

1. 采用树形组织数据,提供对树状结构进行访问的API。用单个文件储存所有数据。
2. 载入的开销非常低,只有一个目录区被载入。采用文件映像方式,因此访问数据时的内存是动态分配的,效率很高。
3. Dll提供的所有API都是C风格的,Delphi,CB等亦可使用
4. 源代码公开。用了一点STL,大量用到递归,模仿Win32API进行数据封装。

/**********************************************************
gpa.h 通用归档API集 DLL接口声明
版权所有(C) 2001 WannaPlay
通用归档API集完全自由发放。
任何人都可以没有限制的使用、修改和再发布本代码。
同时作者也没有义务为代码可能对你的应用和系统造
成的任何损害承担责任。
发现任何Bug,缺陷,或有任何意见和建议,请联系作者。
谢谢。
Home Page: http://wannaplay.51.net
eMail: rocks_lee@263.net
***********************************************************/

#ifndef _WANNAJOY_GPA_H_
#define _WANNAJOY_GPA_H_

#include <windows.h>

#ifdef DLL_EXPORTS
#define GPA_API extern "C" __declspec(dllexport)
#else
#define GPA_API extern "C" __declspec(dllimport)
#endif

// 声明通用归档句柄
DECLARE_HANDLE(HGPA);
// 声明文档节点句柄
DECLARE_HANDLE(HNODE);

/**
* 打开一个通用归档文件
* @param szFilename 通用归档文件名
* @return 通用归档句柄
*/
GPA_API HGPA gpa_Open(LPSTR szFilename);

/**
* 关闭一个通用归档文件
* @param hGpa 通用归档句柄
* @return void
*/
GPA_API void gpa_Close(HGPA hGpa);

/**
* 得到通用归档的树形结构的根节点
* @param hGpa 通用归档句柄
* @return 文档根节点
*/
GPA_API HNODE gpa_GetRoot(HGPA hGpa);

/**
* 得到通用归档文件的版本号,低字为主版本号,高字为副版本号
* @param szFilename 通用归档句柄
* @return 版本号
*/
GPA_API DWORD gpa_GetVersion(HGPA hGpa);

/**
* 将以hRoot为根的树形结构保存为通用归档文件
* @param szFilename 通用归档文件名
* @param hRoot 树形结构的根节点
* @return void
*/
GPA_API void gpa_Save(LPSTR szFilename, HNODE hRoot);

/**
* 打印输出以hNode为根的子树,供调试用
* @param hNode 树形文档节点
* @return void
*/
GPA_API void gpa_DumpNode(HNODE hNode);

/**
* 创建一个数据节点。如果hParent不为空,将自动添加到hParent
* 注意:数据不会被拷贝,直到调用gpa_Save
* @param szNodeName 数据节点的字符串名,必须少于15个字符
* @param hParent 父节点,可以为NULL
* @param pData 数据的起始地址,
* @param dwSize 数据的大小(以字节计算)
* @param uFlags 标志,必须为0
* @return 数据节点句柄
*/
GPA_API HNODE gpa_CreateDataNode(LPSTR szNodeName,
HNODE hParent,
LPVOID pData,
DWORD dwSize,
UINT uFlags);

/**
* 创建一个目录节点。如果hParent不为空,将自动添加到hParent
* 只有目录节点才可以添加子节点
* @param szNodeName 数据节点的字符串名,必须少于15个字符
* @param hParent 父节点,可以为NULL
* @param uFlags 标志,必须为0
* @return 目录节点句柄
*/
GPA_API HNODE gpa_CreateDirNode(LPSTR szNodeName,
HNODE hParent,
UINT uFlags);

/**
* 删除一个节点以及以该节点为根的子树
* @param hNode 待删除节点
* @return void
*/
GPA_API void gpa_DeleteNode(HNODE hNode);

/**
* 判断一个节点是否目录节点
* @param hNode 文档节点
* @return 布尔值
*/
GPA_API BOOL gpa_IsDirectory(HNODE hNode);

/**
* 得到一个节点的名字
* @param hNode 文档节点
* @return 节点的名字
*/
GPA_API LPSTR gpa_GetNodeName(HNODE hNode);

/**
* 得到一个节点的子节点数目,不包括子节点的子节点。
* 对于数据节点,返回0
* @param hNode 文档节点
* @return 子节点数目
*/
GPA_API int gpa_GetChildCount(HNODE hNode);

/**
* 向一个目录节点添加一个子节点。
* 如果hParent是数据节点,调用无任何效果
* @param hParent 父节点
* @param hChild 子节点
* @return void
*/
GPA_API void gpa_AddChild(HNODE hParent, HNODE hChild);

/**
* 删除指定的子树
* @param hParent 父节点
* @param szChildName 子树根节点名
* @return void
*/
GPA_API void gpa_RemoveChild(HNODE hParent, LPSTR szChildName);

/**
* 根据字符串名查找子节点。
* @param hParent 待查找的父节点
* @param szChildName 子节点名称
* @return 有给定名称的第一个子节点,不存在则返回NULL
*/
GPA_API HNODE gpa_FindChild(HNODE hParent, LPSTR szChildName);

/**
* 得到指定位置的子节点。
* 节点的排列同gpa_AddChild和gpa_CreateXXXNode的调用顺序相同
* @param hParent 父节点
* @param nIndex 子节点索引
* @return 指定位置的子节点
*/
GPA_API HNODE gpa_GetChildAt(HNODE hParent, int nIndex);

/**
* 得到一个节点的父节点
* @param hNode 文档节点
* @return 该节点的父节点
*/
GPA_API HNODE gpa_GetParent(HNODE hNode);

/**
* 得到一个数据节点的数据的起始地址和大小
* @param ppData 输出参数,将被填充真正的起始地址
* @param pdwSize 输出参数,将被填充为真正的大小
* @return void
*/
GPA_API void gpa_GetContent(HNODE hDataNode,
LPVOID* ppData,
DWORD* pdwSize);

#endif//_WANNAJOY_GPA_H_

...全文
189 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Jera 2001-08-25
回复
newyj 2001-08-24
http://www.csdn.net/expert/topic/197/197857.shtm
回复
rockswang 2001-08-24
up
回复
rockswang 2001-08-24
要结贴子了,快来抢分呀!!
回复
wangfeng 2001-07-21
我要
wbicom@pub.xaonline.com
回复
rockswang 2001-07-21
push
回复
rockswang 2001-07-18
不信任的话可以自己把工程文件build一下,zip包里有源代码和工程文件。
我还没那么厉害,几百行的程序就能编出病毒和木马,呵呵。

回复
123bug 2001-07-18
?/
回复
knight_z 2001-07-18
谁能证明你的程序没有病毒,木马,嘁!
回复
wannajoy 2001-07-18
换个ID push一下
回复
rockswang 2001-07-17
真正使用时只需要gpa.dll, gpa.lib和gpa.h三个文件
回复
rockswang 2001-07-17
上面的朋友,请到我主页下载
http://wannaplay.51.net/products.html

谢谢
回复
rockswang 2001-07-17
呵呵,帮我测测,
比如,在Delphi中能否正常连接,工作(我最关心这一点,因为正在学delphi)
再比如,如果树结构比较复杂,保存和读取还是否正常。
回复
willwzq 2001-07-17
下载了先
回复
BaoYu 2001-07-17
这么好东西,怎么可能不要
我收
回复
dana 2001-07-17
那么长怎么看,简洁点,
那主要是什么,
如何帮你。
回复
rockswang 2001-07-17
我倒,200分都没人要呀?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-17 07:26
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……