2011-07-06 17 views
3

私は確かにMFCアプリケーションのダイアログに取り組んでいます。MFCダイアログのDestroyWindow()を呼び出す場所は?

たとえば、クラスBCDialogから派生したもの)を使用するクラスACDialogから派生したクラス)があるとします。したがって、A::OnInitDialog()はメソッドをBと呼びます。

私は今、クラスBのデストラクタが

if (GetSafeHwnd()) 
{ 
    DestroyWindow(); 
} 

が含まれていること、これは大丈夫です見ましたか?私の理解ではBDestroyWindow()メソッドをA::OnDestroy()に呼ぶ方が良いでしょう。そうですか?あなたの助けのための

ありがとう!
Oliver

答えて

3

あなたがMFCに掘り下げたように気付いたことは、ラッパーAPIであり厳密にオブジェクト指向ではないことです。一方、RAII(Resource Acquisition Is Initialisation)を使用する場合は、のようにを使用しますが、MFCはそのコンストラクタにウィンドウを作成しません。あなたが正しく指摘したように、それはCreate()メソッドによって行われます。

は、したがって、それはAは(A::OnDestroy)を破壊されているときBを破壊するために、MFCの仕組みを考えると、私には多くの意味がありますので、私はあなたが正しい道を下っていると思います。

関連する問題