ボタンのイベント処理のサンプル
ウインドウ上にボタンを配置してイベントを処理するサンプルコードです。
#include <Windows.h> #include <balor/gui/all.hpp> using namespace balor::gui; int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) { Frame frame(L"ButtonAndEvent"); Button button0(frame, 10, 10, 100, 50, L"button0"); button0.onClick() = [&] (Button::Click& ) { MsgBox::show(L"button0 clicked"); }; Button button1(frame, 10, 80, 100, 50, L"button1", [&] (Button::Click& ) { MsgBox::show(L"button1 clicked"); }); frame.runMessageLoop(); return 0; }
balor ライブラリの導入
balor ライブラリの導入方法を解説します。
まずPCに Visual C++ 2010 以降がインストールされていない場合はインストールして下さい。
次にダウンロードした balor の圧縮ファイルを適当なディレクトリに解凍します。
解凍したディレクトリ内の「samples」の中にサンプルプロジェクトがあるので
Visual C++ でそのままコンパイルできることを確認します。
Visual C++ を起動し、「Win32 プロジェクト」を新規作成します。
プロジェクトのプロパティを開いて
構成プロパティ>VC++ディレクトリ>インクルードディレクトリ
に balor ディレクトリ内の「include」ディレクトリを追加します。
構成プロパティ>VC++ディレクトリ>ライブラリディレクトリ
に balor ディレクトリ内の「lib」ディレクトリを追加します。
以上の設定で balor ライブラリが使えるようになりました。
試しに以下の Hello world サンプルコードをコンパイルして見て下さい。
#include <Windows.h> #include <balor/gui/all.hpp> using namespace balor::gui; int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) { Frame frame(L"Hello world"); frame.onPaint() = [&] (Frame::Paint& e) { e.graphics().drawText(L"Hello world", 20, 10); }; frame.runMessageLoop(); return 0; }
balor とは
balor は C++ Windows GUI ライブラリです。
Java や .NET のように手軽で使いやすく、
MFC のように WIN32 API と連携しやすいライブラリを目指します。
特徴
Hello world サンプルコード
#include <Windows.h> #include <balor/gui/all.hpp> using namespace balor::gui; int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) { Frame frame(L"Hello world"); frame.onPaint() = [&] (Frame::Paint& e) { e.graphics().drawText(L"Hello world", 20, 10); }; frame.runMessageLoop(); return 0; }
対応開発環境
Visau C++ 2010 Express Edition 以降
動作環境
Windows XP 以降
リファレンス
balor ライブラリのオンラインリファレンス。
DLL をまたいだ balor ライブラリの使用方法
balor ライブラリはスタティックリンクライブラリなので通常 DLL を添付する必要はありません。
Hello world サンプルプログラムも exe の大きさは 57kb 程度ですみます。
しかしスタティックリンクライブラリということは
exe ファイルのプロジェクトと exe ファイル内で使う DLL のプロジェクトの
両方で balor ライブラリを使用した場合、それぞれにライブラリが別々にリンクされて
グローバル変数領域が複製されてしまいます。
これではライブラリの動作に問題が出てしまうのでこのような場合は
exe ファイルと一緒に balor_singleton.dll を添付する必要があります。
この dll は balor ライブラリの lib ディレクトリの中に入っています。
balor はグローバル変数にアクセスする前にこの dll の存在を調べ、
見つかった場合はグローバル変数が既に取得済みかどうかを dll に聞きにいきます。
こうして balor を複数のプロジェクトにリンクしている場合でも
グローバル変数が複製されずにすみます。
この仕組みは balor ライブラリのクラスである balor::Singleton クラスに実装されているので
balor ライブラリから使うことができます。