`
yangshen998
  • 浏览: 1289094 次
文章分类
社区版块
存档分类
最新评论

VC中"资源定制"学习手记

 
阅读更多
最近写一个可以将console下的控制台程序输出重定向到VC中EDIT控件的小程序

从而达到控制台程序的GUI化,而这之中很重要的的一个环节就是将源程序与我们做的GUI程序编译到一快,这使用到VC中资源定制的功能。

资源即数据,它们被储在程序的EXE文件中,但是它们并非驻留在程序的数据区域中也就是说资源不能通过程序源代码中定义的变量来直接访问,要使用资源就必须使用windows提供的API函数:

FineResource:查找一个资源。我们是把相关要生成的文件载入,就是用这个函数来确定其资源的位置。

SizeofResource:获得资源的尺寸。

LoadResource:装载资源,装入到内存中。

LockResource:锁定资源,在内存中锁定。

这里每一个函数的返回值分别作为下一个函数的参数,详细介绍一下。

FindResource用来在一个指定的模块中定位所指定的资源:

HRSRC FindResource(

HMODULE hModule, //包含所需资源的模块句柄,如果是程序本身,可以置为NULL

LPCTSTR lpName, //可以是资源名称或资源ID

LPCTSTR lpType //资源类型,在这里也就是我们自己指定的资源类型

);

LoadResource用来将所指定的资源加载到内存当中; HGLOBAL LoadResource(

HMODULE hModule, //模块句柄,同上

HRSRC hResInfo //需要加载的资源句柄,这里也就是FindResource的返回值

);

LockResource用来锁定内存中的资源数据块,它的返回值也就是我们要使用的直系指向资源数据的内存指针; LPVOID LockResource(

HGLOBAL hResData //指向内存中要锁定的资源数据块,这里也就是LoadResource的返回值

);

另外我们还需要用SizeofResource来确定资源的尺寸,我们在操作资源时要用到它。

为了方便说明我们来写个基于对话框的小程序,并将ping.exe这个程序以资源的方式加载进去,运行时会在C:/目录下生成一个ping.exe

整个思路如下:

1建立一个对话框程序MAIN

2将ping.exe作为MAIN的资源一同编译

3查找,加载,锁定资源数据

4将数据生成为文件

第一步

建立一个新的对话框项目

第二步

将面板切换到ResourceView面板 右击 最上面的resources* 文件夹图标

选择 Insert 这时会弹出如下插入资源对话框

选择M导入弹出导入资源对话框

导入资源文件类型选所有文件

最后选要加载的文件这里是ping.exe

之后会弹出定制资源类型对话框 如图

类型名可以随意填写这里填PING

插入后编译程序时ping.exe将做为对话框的资源编译进去

第三步

成功加载后 使用时需要释放出来在来例中可以使用如下代码实现

HRSRC hr=FindResource(0,MAKEINTRESOURCE(IDR_PING),"PING");

if(hr==NULL)

MessageBox("hr error");

dwSize=SizeofResource(NULL,hr);

HGLOBAL hg=LoadResource(NULL,hr);

if(hg==NULL)

MessageBox("hg error");

LPSTR lp=(LPSTR)LockResource(hg);

if(lp==NULL)

MessageBox("lp error");

第四步

当完成第三步后 就是生成ping.exe文件了

可通过如下代码实现

DWORD dwSize, dwWritten;

HANDLE hFile;

hFile =

CreateFile("c://ping.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

if(hFile == NULL)

MessageBox("create file error");

WriteFile(hFile,(LPCVOID)LockResource(hg),dwSize,&dwWritten,NULL);

CloseHandle(hFile);

这样就会在C:/目录下还原ping.exe

总结

资源的定制的关键还是在于查找,加载,锁定资源数据........

与本文相关代码 在VC6.0下面编译无误

pings.rar
分享到:
评论

相关推荐

    VC中实现定制Excel输出

    VC中实现定制Excel输出,可以合并单元格,设置单元格格式,字体等,可以执行模板中的宏,输出符合的报表图。

    VC6.0学习入门到精通手记

    总结来说,"VC6.0学习入门到精通手记"是一份全面的教程,覆盖了从基础的编程元素到进阶的多线程编程,结合具体的控件使用和源码实例,对于希望深入学习VC6.0的初学者来说,无疑是一份宝贵的资源。通过深入学习并实践...

    VC插件资源排序工具

    总的来说,"VC插件资源排序工具"是VC开发中的一款实用工具,通过自动化处理资源排序和冲突,减少了人工干预,让开发者可以更专注于代码逻辑和功能实现,从而提升整体开发效率。对于大型的VC工程而言,这款插件无疑是...

    VC界面编程可以从中学习到如何使用VC中位图等资源创建漂亮

    在VC++(Visual C++)开发环境中,界面设计是至关重要的一环,因为它直接影响到...《通用控件使用详解.pdf》这本书应该会是你学习这一领域的好帮手,它将帮助你更好地理解和掌握这些技术,从而在VC界面编程中游刃有余。

    释放资源vc 释放资源vc

    释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc 释放资源vc vv

    Vc资源管理器,功能强大

    Vc资源管理器是一款强大的工具,它在IT领域中扮演着重要的角色,尤其对于开发者和系统管理员来说,是日常工作中不可或缺的一部分。这款软件的核心特点在于它的多功能性,它能够帮助用户高效地管理和操作各种类型的...

    VC学习内幕,学习笔记

    - **多线程编程**:学习如何在VC中编写多线程程序,处理线程同步和通信问题。 7. **扩展与库集成** - **COM组件**:了解COM组件的概念,以及如何在VC中创建和使用COM对象。 - **第三方库集成**:学习如何将第三...

    VC实现Windows资源管理器

    在VC中实现这样的功能,我们主要依靠MFC(Microsoft Foundation Classes)库,它提供了一系列的类和函数,简化了Windows应用程序的开发。 CTreeCtrl是MFC中的一个类,它封装了Windows API中的树控件(HTREEITEM)。...

    vc资源管理器

    在IT行业中,VC++是一种基于Microsoft Visual Studio的集成开发环境,用于编写使用C++语言的应用程序。"vc资源管理器"通常指的是一个用...通过学习和掌握这些技术,开发者能够构建出功能强大且定制化的资源管理器应用。

    用VC纯资源DLL制作多语言界面程序

    在提供的压缩包中,`用VC纯资源DLL制作多语言界面程序.exe`应该是已经编译好的示例程序,它演示了如何使用纯资源DLL实现多语言切换。`dlrnlres`可能是资源库或者包含其他相关文件,如说明文档或额外的资源文件。 总...

    VC学习2-我们学习VC的心得与体会

    4. **文件操作**:学习如何在VC中进行文件读写,包括文本文件和二进制文件,这对于数据存储和交换是必要的。 5. **多线程编程**:现代应用程序往往需要处理多个并发任务,学习如何在VC中创建和管理线程是提升性能的...

    vc6++ 学习c语言好工具

    总之,VC6++作为C/C++学习工具,因其易用性、灵活性和丰富的学习资源,对于初学者来说是一个很好的起点。结合“VC6.0配置OPENCV1.0方法.docx”的文档,还可以进一步扩展到计算机视觉领域,提升编程实践能力。在学习...

    类VC资源编辑器实现

    本文将深入探讨“类VC资源编辑器实现”这一主题,旨在帮助开发者理解并掌握如何构建一个类似Visual C++ 6.0中的对话框编辑器。 首先,我们来理解“类VC资源编辑器”的核心概念。在VC++中,资源编辑器是用于创建、...

    vc_exe资源提取工具

    - **软件开发**:开发者可以方便地查看竞争对手的应用资源,学习其设计思路,或者在自己的项目中复用资源。 - **资源重用**:提取出的资源可以作为素材库,供设计师进行二次创作。 - **故障排查**:在程序出现...

    VC exe资源提取器

    首先,"VC exe资源提取器"的主要功能是能够从.exe或.dll文件中提取出其内置的资源,包括但不限于图标(ICO)、位图(BMP)、字符串表、对话框模板等。这对于开发者而言,无论是为了复用资源,还是进行二次开发,都...

    VC学习5-我们学习VC的心得与体会

    这篇压缩包文件“VC学习5-我们学习VC的心得与体会”正是为那些想要深入理解和掌握VC技术的人们准备的一份宝贵资源。 首先,我们要理解VC不仅仅是一种编程语言,它还是微软开发的集成开发环境(IDE),集成了编译器...

    整理 VC工程 资源ID

    随着VC工程越来越大,资源编辑越来越频繁,resource里的资源ID号难免混乱,或者重复,很容易造成问题,但又非常不好解决。这个小工具提供了可视化的界面和多种整理方式,可以又快又好的把重复的资源剔除,对资源Id号...

    vc人力资源管理系统 vc实例

    人力资源管理系统是这样的一种管理软件,它能够快速、方便地显示结果,还可以对有关工资的各种信息进行统计,服务于财务部门及公司主要管理者。实施人力资源管理系统可以集中、整合各种信息来源,有利于降底管理成本...

    检查vc6的中英文资源差异

    标题"检查vc6的中英文资源差异"指出,我们需要关注的是如何在vc6环境下比较和管理中英文版本的资源文件,确保软件在不同语言环境下的功能完整性和用户体验。 资源文件是Windows应用程序中存储非代码数据的地方,如...

    VC6.0全套资源.rar

    解压后的文件夹中应包含VC6.0的安装程序和其他相关资源。 2. 安装主程序:运行解压后的VC6.0安装程序,按照安装向导的指引,选择合适的安装路径,一般默认即可。安装过程中可能需要插入Windows 98或ME的安装光盘,...

Global site tag (gtag.js) - Google Analytics