無模式對話框的銷燬&對話框給視圖類發消息

要想完全銷燬一個對話框,就重載對話框的OnOk和OnCancel函數,然後在這兩個函數裏面調用DestroyWindow,如果你是使用new分配的內存,可以重載PostNcDestroy函數,然後在PostNcDestroy函數裏面調用delete   this  
  在默認的情況下,非模態對話框是不會自己調用DestroyWindow來銷燬窗口,只是把它隱藏了,你可以在關閉一個非模態對話框後用IsWindow函數來判斷這個對話框是否被銷燬。  
  還有,不管對話框裏面有沒有OK和Cancel按鈕,當你按esc,cancel鍵,系統菜單的關閉時,都會調用OnCancel.而當你點OK鍵,回車鍵時,都會調用OnOK

下面的例子是在OnOk中銷燬對話框。

void Alpha::OnOK()
{//如果點擊OK則向view類發消息
 // TODO: Add extra validation here
 CMotionView*   pView   =   NULL;  
 pView   =   ((CMotionView*)((CMainFrame  *)AfxGetMainWnd())->GetActiveView());

//在對話框中得到指向視圖的指針

 

 if(pView   !=   NULL)  
 {  
  pView->SendMessage(WM_USERDEFMSG,0,0);//給視圖類發消息
 }  

 
 
 CDialog::OnOK();

 this->DestroyWindow();//銷燬對話框,要放到最後面

//OnCancel函數中也要添加
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章