1. 使用CodeBlocks新建wxWidgets工程
可以使用CodeBlocks自带的wxWidgets工程向导或者是我们自定义的wxempty工程向导,新建工程,保存在D:\test\Cpp\wxtst\wxtst.cbp
从工程中移除所有的文件,使工程为一个不含任何文件的空工程.
2. 使用wxFormBuild新建wxFormBuild工程
在wxFormBuild中,在右侧Object Properties中设置工程参数,这里设置如下
path>.
(这里设置wxFormBuild生成文件的目录与wxFormBuild工程的相对路径,
若保存wxFormBuild工程目录为D:\test\Cpp\wxtst\,则生成程序文件所在目录也为D:\test\Cpp\wxtst\
若这里设置为.\wxFormBuildFiles,则生成程序文件所在目录也为D:\test\Cpp\wxtst\wxFormBuildFiles\)
file>HelloWorldGui
relative_path>checked
code_generaltion C++>checked
然后保存工程在D:\test\Cpp\wxtst\wxtst.fbp
3. 使用wxFormBuild添加控件,设置控件属性,添加控件事件
在wxFormBuild中,按之前编写的HelloWorld工程及后边的事件方法,依次添加控件,
-点击添加Forms分类中的第1个Frame,添加MyFrame1
-在MyFrame1中,点击添加Layout分类中的第1个wxBoxSizer,添加bSizer1
-在bSizer1中点击添加Containers分类中的第1个wxPanel,添加m_panel1
-在m_panel1中点击添加Layout分类中的第1个wxBoxSizer,添加bSizer2
-在bSizer2中点击添加Common分类中的wxButton,添加m_button1
并分别修改MyFrame1的属性title为HelloWorld,修改m_button1的label属性为Quit,
为m_button1的Events属性分类里的OnButtonClick添加OnQuit
然后保存工程,点击Generate Code,生成代码HelloWorldGui.cpp,HelloWorldGui.h
4. 使用wxFormBuild 生成事件响应类
在wxFormBuild中,点击菜单Tools>Generate Inherited Class,选中刚才生成的MyFrame1类,修改Class和File Name为,MyProject1MyFrame1,点击ok,生成MyProject1MyFrame1.cpp,MyProject1MyFrame1.h
5. 在CodeBlocks中添加wxFormBuild生成的文件,添加事件反应代码
在CodeBlocks中添加HelloWorldGui.cpp,HelloWorldGui.h,MyProject1MyFrame1.cpp,MyProject1MyFrame1.h到工程中,修改MyProject1MyFrame1.cpp中的事件反应代码,(还需要添加你新增代码用到的头文件)
#include "MyProject1MyFrame1.h"
#include <wx/app.h>
MyProject1MyFrame1::MyProject1MyFrame1( wxWindow* parent )
:
MyFrame1( parent )
{
}
void MyProject1MyFrame1::OnQuit( wxCommandEvent& event )
{
// TODO: Implement OnQuit
wxTheApp->Exit();
}
6. 在CodeBlocks中添加App应用程序代码及文件
为CodeBlocks工程添加,MyApp.h和MyApp.cpp,编译运行即可.
MyApp.h如下,需要添加#include<wx/wx.h>
#ifndef MYAPP_H_INCLUDED
#define MYAPP_H_INCLUDED
#include<wx/wx.h>
class MyApp : public wxApp
{
public:
MyApp();
virtual ~MyApp();
virtual bool OnInit();
};
DECLARE_APP(MyApp)
#endif // MYAPP_H_INCLUDED
MyApp.cpp如下,需要添加App头文件和事件类的头文件,#include "MyApp.h",#include "MyProject1MyFrame1.h"
#include "MyApp.h"
#include "MyProject1MyFrame1.h"
IMPLEMENT_APP(MyApp)
MyApp::MyApp()
{
}
MyApp::~MyApp()
{
}
bool MyApp::OnInit()
{
MyProject1MyFrame1* myframe = new MyProject1MyFrame1((wxWindow*)NULL);
myframe->Show();
return true;
}