Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49622
  • 博文数量: 9
  • 博客积分: 411
  • 博客等级: 一等列兵
  • 技术积分: 113
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-07 15:32
文章分类

全部博文(9)

文章存档

2010年(9)

我的朋友

分类:

2010-10-02 00:17:17

在wxWidgets中使用嵌入在可执行文件中的静态图像资源要比VC6中的使用稍微麻烦一点。其中需要一个工具,wxrc,该工具用于将资源文件.xrc文件转换为C++可以直接访问的文件。wxrc随着wxWidgets包一起发布了,位于utils目录下,一起发布的是源代码,自己编译一下就ok了。另外说一句,xrc文件就是一个普通的xml文件,该文件的格式可以如下:
 

   
   freebsd.jpg
 
我将它保存为bg.xrc。注意:图片要和该文件位于同一目录内。
 
具体的文件格式可以参看这篇文章:
 
在使用wxrc中我发现,它在对资源进行压缩时使用的是zip,但是,现在有很多人使用的是winrar,没有关系,我们可以自己修改源代码(其实我本人使用的就是winrar)。
 
用vc6打开wxrc的工程文件,在XmlResApp类中找到MakePackageZIP函数,将
    int execres = wxExecute(wxT("zip -9 -j ") +
        wxString(flagVerbose ? wxT("\"") : wxT("-q \"")) +
        parOutput + wxT("\" ") + files, true);
替换为
    int execres = wxExecute(wxT("winrar a -afzip ") + wxString(wxT("\"")) +
        parOutput + wxT("\" ") + files, true);
其实就是替换了压缩工具和它的命令行参数。注意,winrar的安装目录一定要在环境变量Path中,还有不要使用那个命令行工具rar.exe,它不支持-af开关。
 
重新编译wxrc,将wxrc所在的目录加入Path环境变量中。
 
在Windows命令行下,进入我们自己的工程目录,输入命令:
wxrc /c /o bg.h bg.xrc
 
此时会在工程目录内生成一个bg.h头文件,打开自己看看吧。注意:不要修改bg.h文件中的内容。只要将其加入到我们的工程中就行了。
 
如何使用呢?
 
在wxApp的派生类MyApp(应用程序派生类的名称自己定)的OnInit()函数中进行如下调用就行了。
bool MyApp::OnInit()
{
    wxImage::AddHandler(new wxJPEGHandler);  // 必须的
    wxXmlResource::Get()->InitAllHandlers(); // 必须的
    InitXmlResource();       // 必须的,该函数位于wxrc生成的bg.h中
    MyFrame* frame = new MyFrame(wxT(""));
    frame->Show(true);
    SetTopWindow(frame);
    return true;
}
 
此后如果需要加载资源的话,就进行如下调用:
    wxBitmap = m_bitmap = wxXmlResource::Get()->LoadBitmap(wxT("freebsd"));
 
怎么样,简单吧。
 
下面附上一个示例的源代码,该示例演示了如何使用内嵌的图像资源,并使用该图像作为整个窗口的外形,即不规则窗口的使用。该程序在VC++6.0中编译通过
文件: ShapeWindow.rar
大小: 58KB
下载: 下载
阅读(3131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~