无模式对话框的销毁&对话框给视图类发消息

要想完全销毁一个对话框,就重载对话框的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函数中也要添加
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值