【A3】C++Builderテクニカルセッション「wxFormsで始めるwxWidgetsプログラミング」
CodeGear
高橋智宏

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

1アジェンダ• wxWidgets とは?
• wxForms とは?
• wxForms のインストール&使い方• MacOS X(10.4.x, Carbon) でのビルド• Linux(CentOS 4.5, GTK2) でのビルド

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

2

1

wxWidgets とは?

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

3wxWidgets• C++言語向けの、マルチプラットフォームGUIツールキット• http://www.wxwidgets.org/• オープンソース• 単一のソースコードで複数OSに対応できる• 様々なOS,C++コンパイラに対応• 商用利用可能なとても緩やかなライセンス• LGPLがベース

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

42

wxWidgetsの構造
ユーザーアプリケーション
wxWdgets API
wxMSW wxGTK

wxMac

wxMotif

Platform API
Win32

GTK

CarbonMotif

OSWindows

Linux

MacOS X

Unix

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

5

wxWidgetsを入手するには?
•基本的に、ソースコードをダウンロード後、自前でビルド• http://www.wxwidgets.org/downloads/•C++Builder6,2006,2007向けのモジュールは後ほど…

最新はVer2.8.5
Win32専用パッチ

Win32用GTK用MacOSX用
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

63

wxForms とは?

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

7wxForms• TwinForms社が開発・販売• http://www.twinforms.com/• C++Builder6, 2006, 2007 用のプラグイン• wxWidgets用のソースコード一式を自動生成• C++Builderのフォームデザイナとソースコードを同期• C++Builderを使ったビルド&デバッグが可能• 1開発者ライセンスは $29.99 から• 無料のフォーラムあり
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

84

CodePaks - C++Builder用のwxWidgets• wxFormsには、C++Builder用のwxWidgetsモ
ジュールが必要なハズ…
• ビルド済みのライブラリ一式が提供されている• http://sourceforge.net/project/showfiles.php?group_id=191298

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

9wxForms のインストール&使い方
wxWidgets(from CodePaks) のインストール
wxFormsのインストール&アクティベート
アプリケーションの作成

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

105

wxWidgets(from CodePaks) のインストール• C++Builderのバージョンに合わせて、インストー
ラを起動• 例:wxWidgets285_codepak_cds2007.exe• ヘッダファイル• <C++Builder>¥Include¥wxWidgets• スタティックライブラリ• <C++Builder>¥Lib¥wxWidgets

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

11

wxFormsのインストール&アクティベート• wxFormsのインストーラを起動• インストール時に必要なパスワードを入力• ヘッダファイル• <C++Builder>¥Include¥wxForms• プラグインの.bpl• 例:<C++Builder>¥TwinForms¥wxForms¥BCB6¥wxformside6.bpl

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

126

wxFormsのインストール&アクティベート(続き)• IDEを起動後、[ヘルプ]-[wxForms License Transfer...]を選択し、ライセンスファイルを登録• いったんIDEを再起動• オブジェクトギャラリーの[wxForms]カテゴリ• wxForms専用コンポーネント群• [wxForms]-[Option]メニュー

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

13

アプリケーションの作成• 定義 __WXMSW__ が必要• 生成されるソースコードはVCLを必要としない• <C++Builder>¥Include¥wxForms¥wxForms.hpp• 文字列 － wxT(“日本語”)• フォームのアイコンは .xmp 形式• ランタイムテーマが自動で組み込まれる• VCLライクなユーティリティ関数群あり• <C++Builder>¥Include¥wxForms¥borfunctions.hpp
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

14

7

MacOS X(10.4.x, Carbon) でのビルド
wxMac のインストール
wxForms用ヘッダ, プロジェクトファイルの転送
Makefileおよびパッケージ用ファイルの準備

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

15

wxMac のインストール• wxMac 2.8.5 をダウンロード• http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.5.tar.gz• wxMac-2.8.5.tar.gz を展開し• cd wxMac-2.8.5• mkdir osx-build• cd osx-build• ../configure --disable-shared --enable-universal-binary• make• sudo make install
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

168

wxMac のインストール（続き）• インクルードファイル および スタティックライブラリ を確認• /usr/local/bin/wx-config コマンドが重要• コンパイルオプションの出力を確認• wx-config --cxxflags• コンパイル時には 定義 __WXMAC__ が必要• リンクオプションの出力を確認• wx-config --libs

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

17

wxForms用ヘッダ, プロジェクトファイルの転送• wxForms用ヘッダ一式をWindowsからMacに転送• プロジェクトファイルの転送• メインソース – 例:test1.cpp• フォームソース – 例:MainFrame.cpp• フォームヘッダ – 例:MainFrame.h• GUIデザイン用ヘッダ – 例:MainFrame.Designer.h• アイコン用フォルダ – Images/xxx_XPM.xmp

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

189

Makefileおよびパッケージ用ファイルの準備• MacOSX用のパッケージ設定ファイル – Info.plist• MacOSX用のアイコン(.icns) – wxmac.icns• Makefileの例
all: test1
mkdir -p test1.app/Contents/MacOS
mkdir -p test1.app/Contents/Resourcesecho -n 'APPL????' > test1.app/Contents/PkgInfo
cp -p Info.plist test1.app/Contents/
cp -p test1 test1.app/Contents/MacOS
cp -p wxmac.icns test1.app/Contents/Resources
test1.o: test1.cpp
g++ `wx-config --cxxflags` -I/Users/ken/wxWidgets/wxForms -arch ppc -arch i386 -c test1.cpp
MainFrame.o: MainFrame.cpp
g++ `wx-config --cxxflags` -I/Users/ken/wxWidgets/wxForms -arch ppc -arch i386 -c MainFrame.cpp
test1 : test1.o MainFrame.o
g++ test1.o MainFrame.o `wx-config --libs` -o test1clean:rm -fr *.o test1 test1.app
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

19

Linux(CentOS 4.5, GTK2) でのビルド
wxGTK のインストール
wxForms用ヘッダ, プロジェクトファイルの転送
Makefileの準備, 文字コードの変換

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

20

10

wxGTK のインストール• wxGTK 2.8.5 をダウンロード• http://prdownloads.sourceforge.net/wxwindows/wxGTK-2.8.5.tar.gz• wxGTK-2.8.5.tar.gz を展開し• cd wxGTK-2.8.5• mkdir buildgtk• cd buildgtk• ../configure --disable-shared --with-gtk• make• su• make install• ldconfig
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

21

wxGTK のインストール（続き）• インクルードファイル および スタティックライブラリ を確認• /usr/local/bin/wx-config コマンドが重要• コンパイルオプションの出力を確認• wx-config --cxxflags• コンパイル時には 定義 __WXGTK__ が必要• リンクオプションの出力を確認• wx-config --libs

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

22

11

wxForms用ヘッダ, プロジェクトファイルの転送• wxForms用ヘッダ一式をWindowsからLinuxに転送• プロジェクトファイルの転送• メインソース – 例:test1.cpp• フォームソース – 例:MainFrame.cpp• フォームヘッダ – 例:MainFrame.h• GUIデザイン用ヘッダ – 例:MainFrame.Designer.h• アイコン用フォルダ – Images/xxx_XPM.xmp

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

23

Makefileの準備, 文字コードの変換• ソースコードの文字コードを Shift-JIS(MacOS) から UTF-8に変換• 例: iconvコマンドを利用する• Makefileの例
all: test1
test1.o: test1.cpp
g++ `wx-config --cxxflags` -I/home/ken/wxWidgets/wxForms -c test1.cpp
MainFrame.o: MainFrame.cpp
g++ `wx-config --cxxflags` -I/home/ken/wxWidgets/wxForms -c MainFrame.cpp
test1 : test1.o MainFrame.o
g++ test1.o MainFrame.o `wx-config --libs` -o test1
clean:
rm -fr *.o test1

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

2412

参考文献
• Cross Platform Programming With wxWidgets• http://www.amazon.co.jp/dp/0131473816

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

25

Q&A
Any question?

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

26

13