オープンソースのクロスプラットフォームGUIツールキットの一つである"wxWidgets"を使ってWindowsを作ってみた。wxWidgetsはWikipediaにもある通り、1992年から開発が続く、かなり歴史あるツールキットのようだ。実はQtとあまり変わらない時期に開発が始まっているようだ。
とりあえず、はじめの一歩としてWindowを表示してみたいと思う。公式ページのチュートリアルを参考に、ちょっと書いてみた。
- main.hpp
#ifndef __MAIN_HPP__ #define __MAIN_HPP__ #include <wx/wx.h> class DECSApp : public wxApp { public: virtual bool OnInit(); }; #endif //__MAIN_HPP__
- main.cpp
#include "main.hpp" #include "mainwindow.hpp" IMPLEMENT_APP(DECSApp) bool DECSApp::OnInit() { MainWindow *mainwindow = new MainWindow(wxT("Window")); mainwindow->Show(true); return true; }
- mainwindow.hpp
#ifndef __MAINWINDOW_HPP__ #define __MAINWINDOW_HPP__ #include <wx/wx.h> class MainWindow : public wxFrame { public: MainWindow(const wxString& title); }; #endif //__MAINWINDOW_HPP__
- mainwindow.cpp
#include "mainwindow.hpp" MainWindow::MainWindow(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(350, 250)) { Centre(); }
とこんな感じで合計4つのファイルを用意した。
基本的に、wxAppクラスを継承したクラスを作成し、その中に必要なコンポーネントを配置していくという流れになるようだ。今回はwxFrameクラスを継承したMainWindowsクラスを用意して、ウインドウのみを作成している。
これをコンパイルして実行すると
こんな感じにウインドウが表示される。
ちなみにビルドにはなんやかやと色々ライブラリをリンクさせる必要があった。そこら辺の情報は環境に合わせてGoogle先生に聞いてみると出てくる。今回の環境では
- wxmsw28_core.lib
- wxbase28.lib
- wxtiff.lib
- wxjpeg.lib
- wxpng.lib
- wxzlib.lib
- wxregex.lib
- wxexpat.lib
- winmm.lib
- comctl32.lib
- rpcrt4.lib
- wsock32.lib
- odbc32.lib
ここら辺をリンクした。
コメント