zoukankan      html  css  js  c++  java
  • 非模态窗口的创建方法

    粘贴一些关键代码(IN  FILE_MYBOLE):

    CMyboleView窗口类中

    void CMyboleView::OnMenuDialog()
    {
        // TODO: 在此添加命令处理程序代码
        //非模态对话框的使用,要更改 OnOK 这个虚函数
        if(m_pDlg)
        {
            m_pDlg->SetActiveWindow();
        }
        else
        {
            m_pDlg = new CTestDlg(this);
            m_pDlg->Create(IDD_ONE_DLG, this);
            m_pDlg->ShowWindow(SW_SHOW);
        }
    }

    初始化指针CTestDlg类的对象指针为NULL

    CMyboleView::CMyboleView()
    {
        // TODO: 在此处添加构造代码
        m_pDlg = NULL;
    }

    然后处理OK或者Cancel按钮

    Cancel

    void CTestDlg::OnCancel()
    {
        // TODO: 在此添加专用代码和/或调用基类
        //CWnd *p1 = GetParent();
        //CWnd *p2 = m_pParentWnd;
        //CWnd *p3 = GetParentFrame();
        //CWnd *p4 = GetParentOwner();
        //CWnd *p5 = GetOwner();
        
        //获取CTestDlg的指针有两种方法,都可以用,但是必须用m_pParentWnd,不能用GetParent
        //方法一:
        /*CMyboleView *pFather = (CMyboleView *)m_pParentWnd;
        pFather->m_pDlg = NULL;*/
    
        //方法二:
        ((CMyboleView *)m_pParentWnd)->m_pDlg = NULL;
    
        DestroyWindow(); //删除对话框,但没有删除对话框对象
    }

    OK

    void CTestDlg::OnOK()
    {
        // TODO: 在此添加专用代码和/或调用基类
    
        ((CMyboleView *)m_pParentWnd)->m_pDlg = NULL;
        DestroyWindow(); //删除对话框,但没有删除对话框对象
    }

    最后重写PostNcDestroy用来真正的销毁CTestDialog对象

    void CTestDlg::PostNcDestroy()
    {
        // TODO: 在此添加专用代码和/或调用基类
        delete this;
        CDialogEx::PostNcDestroy();
    }
  • 相关阅读:
    Linux设备树(四 中断)
    Linux设备树(三 属性)
    Linux设备树(二 节点)
    责任链设计模式
    获取服务器内存和可用线程
    秒杀抢购思路解析
    Hystrix 用法及注解用法
    object is not an instance of declaring class
    sqlserver 截取字符串
    sqlserver 转化函数
  • 原文地址:https://www.cnblogs.com/develop-me/p/5744837.html
Copyright © 2011-2022 走看看