如何使用文本文件资源?

2025-06-07 01:42:59

1、自定义资源文件:导入资源后,需要输入一个资源类型。使用时就需要这个类型。导入后会自动生成一个类型和一个资源ID。

2、代码解释:FindResource函数,第一个参数设置为NULL,表示为程序自己。如果是直接在自己的资源中加载,设置为空即可。第二个参数是资源的名称字符串,这时我们需要按照字符串。一般使用的是ID宏,此宏代表一个数字,并不是字符串。所以此处需要将数字ID转换成资源名称字符串,这就是MAKEINTRESOURCE宏的作用,传入ID,返回的就是字符串名称。如果想直接使用名字,则给资源ID命名时,在资源的属性中的ID中,使用英文字符双引号修改ID即可。

3、命名完后,在资源视图可以看到资源的id是字符串形式的了。

4、此时就可以直接传入这个字符串,而不需要MAKEINTRESOURCE了。代码类似于:HRSRChData=FindResource(NULL,L"id",_T("txt"));//-获取资源FindResource最后一个参数就是资源类型。如果是自定义类型,则没有默认的,此时需要传入的值就是添加自定义时的资源的类型名称,使用字符串传入,如上面的_T("txt")。而对于内置类型的,可以直接使用内置的类型宏。

5、FindResource返回的值就是资源信息块的句柄值,如果失败则为NULL。其实就是在可执行模块所在的位就女蒿鸳置。LoadResource函数则通过这个句柄在模块的数据段中加载这个资源,如果没有这个句柄,是找不到资源的。如果FindResource传入的是其他程序的实例句柄,则可以加载其他EXE或者dll文件的资源。-------------------------------------------------------------------LoadResource函数的第一个参数与FindResource一样。第二个参数就是FindResource函数返回的句柄。这样就将资源从模块加载到内存了,并返回一个句柄。通过这个句柄就可以在内存中找到加载进去的资源。但是只是一个句柄,不能直接操作数据,详细了解句柄,请阅读《浅析句柄的本质》。----------------------------------------------------------------------LockResource函数用来锁定内存中的资源数据块,返回指向资源的地址的指针。在资源使用完毕后我们不需要使用UnlockResource和FreeResource来手动地释放资源,因为它们都是16位Windows遗留下来的,在Win32中,在使用完毕后系统会自动回收。这个是为了兼容以前的版本,才使用这个函数名字,名字的意思不代表函数的功能,此处只是返回指向资源起始地址的指针,通过这个指针就可以操作资源了。----------------------------------------------------------------------

6、因为我实现保存的是ANSI文本文件,因此使用CStringA来接收。通过memcpy内存复制函数,将资源的二进制数据复制到栓疠瑕愤字符串缓冲中。当然此处也可以使用char数组。而MessageBox是接受宽字符的,所以最后又将窄字符传给宽字符初始化为宽字符,并显示出来。只是宽窄不一样,其他的部分都一样。就不多说。想了解宽窄字符的知识,请阅读《宽字符串与窄字符串的相互转换》。-------------------------------------------------------------------------这样就将文本文件显示在消息框中了。当然,也可以他用,此处只是显示文本文件的内容,其他的自己发挥,原理一样。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢