wxWidgets开发环境在VS 2005下的搭建

1、网上下载wxWidgets的安装包

从wxWidgets的官方网站(http://www.wxwidgets.org/downloads/)下载wxWidgets的windows版本wsMSW版本的,下载之后,解压缩安装。

2、   编译wxWidgets库文件

打开安装wxWidgets的目录即($(wxWidgetsinstallpath)代表wxWidgets的安装目录),在安装目录找到build目录,然后在build目录下找到msw目录,打开msw目录,用vs2005打开wx.dsw文件。这个时候会提示是否转换,如图-1所示:

选择Yes To All选项。

wxWidgets编译的版本主要有静态库和动态库,而动态库和静态库中又分为Unicode码的和ANSII码的。下面来介绍一下静态库的ANSII码版本的。选择编译版本为Debug版本的,然后进行编译。wx.dsw中有20个工程,当20个工程编译完成之后,这个时候会在安装目录下的lib目录下生成vc_lib目录,vc_lib目录下有刚才编译生成的库文件。

3、   配置库文件和头文件目录

打开vs 2005,选择Tools->Options,选择Projects and Solutions选项,

在Show directories for选项中选择Include files

加入头文件的路径

$(wxWidgetsinstallpath)\lib\vc_lib\mswd

$(wxWidgetsinstallpath)\include

在Show directories for选项中选择Library files

加入库文件的路径

$(wxWidgetsinstallpath)\lib\vc_lib

4、   建立wxWidgets工程

建立一个空的win32 application工程(一定要是application工程哦,不可以是Console工程)。

然后在该工程中添加一个头文件wx_pch.h,内容如下

#pragma once

 

#if(defined(USE_PCH) && !defined(WX_PRECOMP))

#defineWX_PRECOMP

#endif// USE_PCH

#include <wx/wxprec.h>

#ifdef __BORLANDC__

#pragmahdrstop

#endif

#include <wx/wx.h>

#include <wx/dc.h>

#include <wx/listctrl.h>

#include <wx/stattext.h>

#include <wx/textctrl.h>

#include <wx/srchctrl.h>

#include <wx/statline.h>

#include <wx/choice.h>

#include <wx/radiobut.h>

#include <wx/dynarray.h>

#include <wx/grid.h>

#include <wx/aui/aui.h>

#include <wx/splitter.h>

#include <wx/msw/setup.h>

#ifndef WX_PRECOMP

#include<wx/wx.h>

#endif

#ifdef USE_PCH

#endif// USE_PCH

 

接着进行添加一个类CBaseApp类,然后修改CBaseApp类,让它继承wxApp类。然后在CBaseApp类中添加虚函数virtualbool OnInit(),

BaseApp.h

 

#pragma once

 

#include "wx_pch.h"

#include "MainFrame.h"

class CBaseApp:publicwxApp

{

public:

       CBaseApp(void);

public:

       virtual ~CBaseApp(void);

 

       virtualbool OnInit();

       virtualvoid ExitMainLoop();

       //主框架的指针

       CMainFrame*m_pMainWnd;      

};

 

IMPLEMENT_APP(CBaseApp)

DECLARE_APP(CBaseApp)

 

接着添加一个CMainFrame类,该类继承wxFrame,其代码如下

MainFrame.h

bool CBaseApp::OnInit()

{

       wxStringstrTitle = wxT("应用程序窗口");
       if (NULL ==m_pMainWnd)
       {

              m_pMainWnd =new CMainFrame(strTitle);

       }

       m_pMainWnd->Centre();
       m_pMainWnd->Show();

       returntrue;

}

BaseApp.cpp

#include "BaseApp.h"

 

CBaseApp::CBaseApp(void):
m_pMainWnd(NULL)
{      

}

CBaseApp::~CBaseApp(void)
{     

}

void CBaseApp::ExitMainLoop()
{

       if (NULL !=m_pMainWnd)
       {
             
deletem_pMainWnd;
              m_pMainWnd =NULL;
       }

}

bool CBaseApp::OnInit()
{

       wxStringstrTitle = wxT("应用程序窗口");
       if (NULL ==m_pMainWnd)
       {

              m_pMainWnd =new CMainFrame(strTitle);

       }

       m_pMainWnd->Centre();
       m_pMainWnd->Show();

       returntrue;


MainFrame.cpp

#include "MainFrame.h"

 

BEGIN_EVENT_TABLE(CMainFrame,wxFrame)

 

END_EVENT_TABLE()

 

CMainFrame::CMainFrame(constwxString&strtitle):
wxFrame(NULL,wxID_ANY,strtitle)
{

       //设置显示图标
       LoadAppIcon();

}

CMainFrame::~CMainFrame(void)
{

}

void CMainFrame::LoadAppIcon(void)
{

       wxIconIcon;
       //图片的路径
       wxStringIconPath = wxT("D:\\Icon.ico");      

       //如果加载成功则设置图标
       if (Icon.LoadFile(IconPath,wxBITMAP_TYPE_ICO))
       {

              SetIcon(Icon);

       }

}

 

接下来打开工程属性
ConfigurationProperties->General
选择字节编码为多字节编码
接下来设置
ConfigurationProperties->C++->Preprocessor
在Preprocessor Definitions中输入
WIN32;_DEBUG;_WINDOWS;__WXMSW__;__WXDEBUG__;_MBCS;NOPCH

在Configuration Properties->Linker->Input
中的Additional Dependencies中输入
wxmsw28d_xrc.libwxmsw28d_html.lib wxmsw28d_adv.lib wxmsw28d_core.lib wxbase28d_xml.lib wxbase28d.libwxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib winmm.libshell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.libwsock32.lib odbc32.lib

当输入完成之后,大功告成啦,你就可以编译程序了,祝你成功。

-----------------------------------------------------------------------------------------------------------

需要注意字符集的选择,工程的字符集必須跟调用的wx库的字符集一致,不然在link时出现找不到相关函数的错误.
在项目->配置属性->常 规->字符集中进行设置.

-----------------------------------------------------------------------------------------------------------

如果出现
无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
这样的错误,则:

1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS
2.进入 project->setting->Link, 在Project options中将 /subsystem:console改为/subsystem:windows.

-----------------------------------------------------------------------------------------------------------

 


你可能感兴趣的:(windows,null,application,include,dependencies,preprocessor)