>>800
クラスの設計とかは経験値が重要かもしれん。
いくつもプログラム書いてみることだな。ガンバレ

子ウィンドウを考えないなら俺ならこうすると思う。
clas Iウィンドウ{
 RECT* GetRect();
 プロシージャー(...);
 (略)
}
class ウィンドウマネージャー{
 ウィンドウ追加(Iウィンドウ *pWindow);
 ウィンドウ抹殺(Iウィンドウ *pWindow);
 プロシージャー(...)
 (略)
}
実際のコントロールはIウィンドウを継承させる。
そしたら、ボタンでもエディットボックスでもウィンドウマネージャーにぶち込める。
本来のウィンドウをサブクラス化とかして、ウィンドウマネージャーのプロシージャーに渡す。
ウィンドウマネージャーでアクティブなコントロールを判断(クリックならヒットテストして)、そしてコントロールのプロシージャーを実行。

ウィンドウマネージャー::プロシージャー(...){
 Iウィンドウ *pWin = ウィンドウマネージャー::アクティブウィンドウ検索(posClick) ;
 pWin.プロシージャー(...) ;}

こんな感じかな。
Iウィンドウでコントロールの場所と矩形領域を管理。
ウィンドウマネージャーでウィンドウの重なり(順番)を管理。
参考にならなかったらすまぬ。
俺が助言できるのはココまでだ。