dlib C++ ライブラリ winmain関数について

dlib C++ ライブラリには、console版とgui版があります。

通常、C 及び C++ はmain関数から始まりますが、dlib C++ライブラリの
gui版を使うときは、main関数の代わりにwinmain関数を使います。
winmain関数の引数と戻り値の型は、↓のようになってます。

void winmain(int argc, char **argv);

winmain の中で、base_windowクラスを継承したユーザが定義するクラス(仮に
クラス名winとします)を↓のように呼び出すような使い方をします。

win *w = new win();

ソースを見て気づいたのですが、このwinmain関数、メインスレッドと別スレッドで
動くようにできています。一方、イベントループはメインスレッドで動きます。

このせいで、winクラスのコンストラクタが終了する前にwinクラス内のコールバック関数
が起動してしまうことがあるようなのでコールバック関数がコンストラクタの後に実行
される前提で組むことができないようです。
winクラスのコンストラクタに初期化処理を入れるときなど、注意する必要がありそうです。
追記:
勘違いでしたorz
winmain関数とイベントループは確かに別スレッドで動きますが、base_windowクラスのコン
ストラクタとイベントループをmutexでロックしていましたので、上の枠内のようなことは
起こらないようです。




もっちーの小部屋 自作のソフトを公開してます。
http://www.geocities.jp/mocchi_2003/index.html