Last Updated 2004/09/17
Programming Tips Visual C++ MFC ウィンドウ  索 引 
オーナーウィンドウと親ウィンドウの違い
2004/09/17

ウィンドウクラス(WND 構造体)には hwndParent と hwndOwner が存在する.
オーナーウィンドウと親ウィンドウという言葉があるがどう違うのであろう?
以下推論である.

親子はウィンドウ間の部品関係である.
ダイアログとコントロールのような関係.
MDI も親ウィンドウがクライアントウィンドウを包含している.
クリッピングや,親に対する不可視や移動など全て子ウィンドウに影響をあたえる.

オーナーは,自立しているウィンドウである.
包含関係はない.
しかし無関係ではなく,Zオーダーなど被所有者は常に所有者より前にいる.
また被所有者は所有者にメッセージを送る.
(ポップアップメニューなど)

ウィンドウスタイルで WS_CHILD であれば他のウィンドウと親子関係であり,WS_POPUP なら他のウィンドウと所有関係がある.

親子関係は双方向で親から子,子から親を導けるが,所有関係は被所有者から所有者へ導けるが,所有者から被所有者へ導くことは出来ない.
( GetLastActivePopup() がそれに近い API かもしれない)


参照
前後のTips
オーナーウィンドウと親ウィンドウの違い

DSS ProgrammingTipsCGI Ver2.02