55

Win32 プログラミングでは、ウィンドウの親とウィンドウの所有者の違いは何ですか? 私はそれを理解したと思ったので、次のコードに出くわしました:

SetWindowLong(handle, GWL_HWNDPARENT, foo);

GWL_HWNDPARENT が使用されているにもかかわらず、これは実際には親ではなくウィンドウの所有者を設定します。親/所有者という用語は交換可能ですか、それとも実際に違いはありますか?

4

4 に答える 4

29

所有権は 2 つのトップ レベル ウィンドウ間の関係であり、親はトップ レベルと WS_CHILD、または WS_CHILD と別の WS_CHILD の間の関係です。

ボタンの親はボタンがあるフォームですが、メッセージ ボックスはそれを表示したフォームが所有します。

Microsoft Win32 Window Hierarchy and Stylesのこの記事を読んで、Ownership、Parenting、ZOrder、SetWindowLong、GetWindow、およびウィンドウ リレーションシップを作成するための Win32 API のその他すべての厄介な部分をより明確に理解してください。

編集: Microsoft がそのコンテンツを削除したようです。これは、 Ownership / Parenting の別の合理的な要約です

于 2009-03-05T17:23:24.107 に答える
1

Chen のブログ投稿は、読むべきものです。私にとって重要な点は、WS_CHILD スタイルを子ウィンドウで使用する必要があるということです。子ウィンドウを作成して親ハンドルを CreateWindow( ) に渡すことはできますが、WS_CHILD スタイルを設定していない場合、2 つのウィンドウは親子関係ではなく所有者関係になります。

于 2015-01-18T17:12:31.643 に答える