wxWidgetsを使ってみよう
VC++ 2008 ExpressでwxWidgetsを使うための設定方法をまとめてみました。(2010/9/11時点の情報)
参考サイト: http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide
wxWidgetsとは
wxWidgetsとはC++でGUIを作成することができるクロスプラットフォームライブラリです。Windowsはもちろん、Mac、Linuxでもちゃんと動きます。見た目が各OSの標準的なデザインになるのでOSごとにGUIの処理を分けて考える必要は全くありません。
wxWidgetsのダウンロード
http://www.wxwidgets.org/downloads/ から入手することができます。(現時点での安定版は2.8.11)
"wxMSW"のところでWindows用インストーラ(あるいはzip形式)をダウンロードします。
次に、wxWidgetsを例えば次のディレクトリに展開します。
C:\wxWidgets-2.8.11
以下、wxWidgetsをインストールしたディレクトリを
初期設定
wxWidgetsをビルドする前に自分で設定をカスタマイズすることができます。各設定項目はsetup.hに定義されています。
例えば、デフォルトではOpenGLを使えないので、下のようにwxUSE_GLCANVASを1に変更して利用できるようにしておきます。
#define wxUSE_GLCANVAS 1
wxWidgetsのビルド
DebugビルドとReleaseビルドの両方で「ソリューションのビルド」を実行します。
ビルドが終わったら、
VCの設定
1.Windowsアプリケーションで空の新規プロジェクトを作成
2.インクルードディレクトリの追加
プロジェクトのプロパティ→構成プロパティ→C/C++→全般→追加のインクルードディレクトリに以下のパスを追加
$(WXWIN)\include;$(WXWIN)\lib\vc_lib\mswd (Debug,Release両方)
3.ライブラリのディレクトリ追加
プロジェクトのプロパティ→構成プロパティ→リンカ→全般→追加のライブラリディレクトリに以下のパスを追加
$(WXWIN)\lib\vc_lib (Debug,Release両方)
4.依存するライブラリの追加
プロジェクトのプロパティ→構成プロパティ→リンカ→入力で次のライブラリを指定
[Debugビルド]
wxmsw28d_core.lib wxbase28d.lib (必須 wxWidgetsコアライブラリ)
comctl32.lib rpcrt4.lib winmm.lib advapi32.lib wsock32.lib (必須)
wxpngd.lib wxzlibd.lib wxjpegd.lib wxtiffd.lib wxregexd.lib wxexpatd.lib (オプション 必要に応じて)
wxmsw28d_gl.lib (OpenGLを利用する場合)
[Releaseビルド]
wxmsw28_core.lib wxbase28.lib
comctl32.lib rpcrt4.lib winmm.lib advapi32.lib wsock32.lib
wxpng.lib wxzlib.lib wxjpeg.lib wxtiff.lib wxregex.lib wxexpat.lib
wxmsw28_gl.lib (OpenGLを利用する場合)
簡単なサンプル
SampleMain.cppというファイルに以下のコードを記述してビルド→実行してください。
HelloWorldというタイトルのウインドウが1つ表示されます。
#include "wx/wx.h" class MyApp: public wxApp { virtual bool OnInit(); }; bool MyApp::OnInit() { wxFrame *frame = new wxFrame( NULL, -1, _("Hello World"), wxPoint(10, 10), wxSize(200, 200) ); frame->Show(true); SetTopWindow(frame); return true; } IMPLEMENT_APP(MyApp)
main関数はIMPLEMENT_APPというマクロで定義されており、アプリケーションクラスwxAppを引数として渡す形になっています。また、フレームはwxFrameクラスとして定義されています。
(注)Unicode Debugビルドでなく普通のDebugビルドでコンパイルできない場合は、
プロジェクトのプロパティ→構成プロパティ→全般→文字セットを
"マルチ バイト文字セットを使用する"に設定します。