dlib C++ ライブラリ winmain関数について
通常、C 及び C++ はmain関数から始まりますが、dlib C++ライブラリの
gui版を使うときは、main関数の代わりにwinmain関数を使います。
winmain関数の引数と戻り値の型は、↓のようになってます。
gui版を使うときは、main関数の代わりにwinmain関数を使います。
winmain関数の引数と戻り値の型は、↓のようになってます。
void winmain(int argc, char **argv);
winmain の中で、base_windowクラスを継承したユーザが定義するクラス(仮に
クラス名winとします)を↓のように呼び出すような使い方をします。
クラス名winとします)を↓のように呼び出すような使い方をします。
win *w = new win();
ソースを見て気づいたのですが、このwinmain関数、メインスレッドと別スレッドで動くようにできています。一方、イベントループはメインスレッドで動きます。
このせいで、winクラスのコンストラクタが終了する前にwinクラス内のコールバック関数 が起動してしまうことがあるようなのでコールバック関数がコンストラクタの後に実行 される前提で組むことができないようです。 winクラスのコンストラクタに初期化処理を入れるときなど、注意する必要がありそうです。追記:
勘違いでしたorz
winmain関数とイベントループは確かに別スレッドで動きますが、base_windowクラスのコン
ストラクタとイベントループをmutexでロックしていましたので、上の枠内のようなことは
起こらないようです。
関連
- dlib C++ Library 目次
- dlib C++ライブラリでOpenGLを使えるようにした
- dlib C++ ライブラリ winmain関数について
- dlib C++ ライブラリ GUI部品のマルチバイト化