星期三, 七月 01, 2009

如何在唯一的wxWidgets执行文件中包含资源数据的步骤

编写xrc文件,手工编写是要让人崩溃的,可以下载http://wxformbuilder.org/ 下载用来
工具制作xrc文件

wxWidgets for C++从资源文件中静态装载图像


在wxWidgets中装载图像是非常容易的,但是如果将图像文件和可执行文件放到一起,在发布时只需要发布可执行文件,要实现这种功能,一般可以使用资 源文件来解决。在windows下的资源文件的源文件是*.rc,编译后叫*.res。在linux下类似,源文件为*.xrc,编译后叫*.xres。 但它们是xml格式的,要装载这种资源文件也得动态进行装载。相当于配置文件。

如果想将其直接编译进可执行文件。需要一个工具wxrc。这个工作在wxWidgets中的utils/wxrc目录中,可自己编译,mingw32-make -f makefile.gcc UNICODE=1 BUILD=release。可使用这个工具将*.xrc 生成c++代码,如果是图像,就将其转换成字符数组。然后和其它程序一起进行编译。可使用wxrc -c main.xrc -v -o main.h

main.xrc的格式如下:
<?xml version="1.0"?>
<resource version="2.3.0.1">
<object class="wxBitmap" name="background">background.jpg</object>
</resource>

生成的main.h的格式如下:

//
// This file was automatically generated by wxrc, do not edit by hand.
//

#include
<wx/wxprec.h>

#ifdef __BORLANDC__
#pragma hdrstop

在Visual C++的项目中添加XRC文件
虽然wxWidgets提供了XRC文件的编译器,但是把XRC的文件直接添加到Visual C++的项目中的话确没有任何效果,因为Visual C++默认能够处理的文件类型并不包含XRC文件。其实通过Visual C++的"自定义生成步骤"可以让XRC文件被自动编译:



引用:
打开项目中XRC文件的属性页。
选择"自定义生成步骤"。
在"命令行"处输入" /c /o $(InputDir)$(InputName).cpp $(InputPath)"。
在"输出"处输入"$(InputDir)$(InputName).cpp"。
在"附加依赖项"处输入XRC文件里引用的资源文件名(比如图片文件之类的),让这些资源文件被更新时XRC文件也会被重新编译。
按"确定"按钮关闭属性页。
编译XRC文件产生一个同名的C++源文件。
把XRC文件的目录下同名的C++源文件添加到项目中。
完成上步骤后,就可以让Visual C++自动把XRC文件的内容集成到二进制程序中了,以后XRC文件如果有什么改动,生成项目时会自动更新二进制程序里的XRC内容。


6 获得Windows应用程序实例句柄
声明如下函数:
代码:
    extern "C"
{
WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();


}
这是wxWidgets内部使用的函数,用于获得HINSTANCE类型的。Windows应用程序实例句柄。