我在学习CodeBlocks(10.05,中文)中用wxWidgets(wxWidgets-2.8.12)来创建不规则窗口时,发现图片不能打包到exe文件里面,这样在发布exe程序是必须要带上相应的图片,甚是不方便,经过苦思和辛苦的查阅,终于找到解决办法,现记录下这个过程作为被查,也对与我一样痛苦挣扎的小虾们一点启示吧。
一、准备工作:
1、环境的搭建,不讲了,我的配置是:CodeBlocks(10.05,中文)和wxWidgets(wxWidgets-2.8.12)
2、准备一张图片,本例中的图片为shape.png,见附件。
二、将图片转换成*.h文件:
这里就要使用wxWidgets自带的wxrc.exe(项目在wxWidgets的安装目录中的utils文件夹里面)了。不过wxrc.exe不是现成的,需要自己编译。本例中已包含编译好的wxrc.exe,具体怎么编译就不讲了。现讲讲图片的转换过程:
1、写一个shape.xml的文件,内容如下:
<?xml version="1.0"?> <resource version="2.3.0.1"> <object class="wxBitmap" name="shape">shape.png</object> </resource>
2、转换图片:
点击“开始”菜单-“运行”,输入“cmd”,将当前目录设定为wxrc.exe所在目录,并将shape.png图片拷贝到wxrc.exe所在目录内(这样是为了方便)。
在dos窗口输入wxrc -c shape.xrc -v -o shape.h并回车,即可看到shap.h的文件了。
三、开始不规则窗口项目
1、新建一wxWidgets project项目,具体设置看图。
2、设置窗口属性
3、将shap.h拷贝到TT项目目录中,在TTApp.cpp中包含shap.h头文件,并将添加如下代码:
=====文件名:TTApp.cpp===== /*************************************************************** * Name: TTApp.cpp * Purpose: Code for Application Class * Author: 代启发 () * Created: 2012-08-04 * Copyright: 代启发 () * License: **************************************************************/ #include "TTApp.h" //(*AppHeaders #include "TTMain.h" #include <wx/image.h> #include "shape.h" //*) IMPLEMENT_APP(TTApp); bool TTApp::OnInit() { //(*AppInitialize bool wxsOK = true; // wxInitAllImageHandlers(); wxImage::AddHandler(new wxPNGHandler); // 必须的 wxXmlResource::Get()->InitAllHandlers(); // 必须的 InitXmlResource(); if ( wxsOK ) { TTFrame* Frame = new TTFrame(0); Frame->Show(); SetTopWindow(Frame); }