C++なら、GUIは自分でライブラリ組んで作ってみろ。
ちなみに俺は全てのメッセージで"Onなんとか"メソッドを呼び出すWindowのクラスを作り
それから派生させてButtonとかGroupBoxとか作ってる。必要な仮想関数をオーバーライドして。
一回ライブラリを作れば楽だよ。
ちなみにウインドウは
RWindow r;
r.Create(NULL,"aiueo","class1",0,0,200,200);
これだけで出る。(Rは僕の名前のイニシャル)。まあ何もしないウインドウを出すなんてまれだけど。
あとはC#のようにWindowクラスを継承した新しいWindowクラスを作り、そこにButtonやGroupBoxをメンバ変数として宣言する。
そいつらからのメッセージは最初のRWindowで定義されたOnCommand(RWindow* r)等のメソッドで全て拾うことができる。
この親ウインドウに送られてくるメッセージには発生したクラスのポインタが入っていて、上手い具合にRWindowにポリモーフィズムして、Javaのようにsender(引数) == &Button1(メンバ変数)というふうに比べることができる。
まあ、こんなスペースでは全てを語ることはできないけど、メッセージの処理を上手く表現することが天国への鍵だね。
ちょっと工夫すれば面倒くさいウインドウプロシージャの定義は1個だけで済む。
最近は自作GUIも作ったりなんかしてるね。おもしろいよ。
はっきり言ってダイアログエディタでダイアログ作って個別にウインドウプロシージャ定義してDialogBoxで表示なんて、馬鹿のすることだよ。