zoukankan      html  css  js  c++  java
  • 非模态对话框的销毁

    非模态对话框相对于模态对话框,它的创建和销毁过程和模态对话框有一点区别,先看一下MSDN的原文:

    When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base class CDialog::OnCancel, because it calls EndDialog, which will make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog boxes in order to delete this, since modeless dialog boxes are usually allocated with new. Modal dialog boxes are usually constructed on the frame and do not need PostNcDestroy cleanup.

    所以:

    一、 在非模态对话框中override OnOK和OnCancel

    protected:

        virtual void OnOK();

        virtual void OnCancel();

     

    void CYourDlg::OnOK()

    {

        this->DestroyWindow();

    }

    void CYourDlg::OnCancel()

    {

        this->DestroyWindow();

    }

     

    二、 在非模态对话框中override PostNcDestroy

    protected:

        virtual void PostNcDestroy();

     

    void CYourDlg::PostNcDestroy()

    {

        CDialog::PostNcDestroy();

        delete this;

    }

    非模态对话框的创建代码一般如下:

    CYourDlg *pDlg=new CYourDlg;
    pDlg->Create(IDD_DLG_YOUR, this);
    pDlg->ShowWindow(SW_SHOW);

  • 相关阅读:
    阅读Unity官方技术blog笔记
    设计模式-具有Model-View-ViewModel设计模式的WPF应用
    关于PureMVC的一点想法
    管窥WOWUIInterface代码
    Lua 5.4引入的新变动
    Unity手册SpriteAtlasManager翻译
    2D向量的数学计算
    提前编译(AOT编译)Wiki翻译
    Lua5.3手册标准库拾遗
    C#异步语法糖的苦与甜
  • 原文地址:https://www.cnblogs.com/Hisin/p/2378043.html
Copyright © 2011-2022 走看看