Akira45 2019-06-13 21:25 采纳率: 0%
浏览 602
已结题

MFC窗口调用DestroyWindow()以后,窗体对应的cpp内的变量中的赋值在下次加载该窗口时依然存在

该问题的窗体由父窗口mainWindow和子窗口childWindow组成。
其中mainWindow、childWindow窗口在工程文件中对应的文件分别为

mainWindow.h mainWindow.cpp(父窗口)

childWindow.h childWindow.cpp(子窗口)

其中子窗口由VS窗口向导创建。
在父窗口中按下按钮,子窗口显示,按下子窗口中按钮,赋值然后子窗口关闭,已经确定
子窗口OnClose()时调用DestroyWindow()并且在PostNcDestroy()确认其hWnd已经=NULL
以下是调用代码。

//父窗口调用子窗口代码如下(mainWindow.cpp)
#include childWindow.h;

//某个方法中
{
      childWindow childWindowDlg;
      childWindowDlg.DoModal();
}


//子窗口变量赋值代码如下(childWindow.cpp)
vector<CString> shipcode;
//然后在某个方法中
{
      int shipSize = shipcode.size();
            //然后这里就是问题所在了,第一次启动该窗口时执行该方法时shipSize为0,将此vector赋值以后(如添加了3个"a""b""c");然后将窗口关闭并且确认调用了DestroyWindow()以后,在父窗口中的子窗口窗口调用代码(就是上面的父窗口的代码)再次被调用然后子窗口创建完成后,再次执行此子窗口的方法,发现shipSize为3也就是上一次子窗口被关闭前该变量被赋的值。
}

请问大家该问题怎么解决,我想每次启动子窗口shipSize都为0,本人MFC学习不多,临时需求要写。因为需求关系不能使用QT,希望大家帮帮忙呀。

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-06-13 22:04
    关注

    DestroyWindow()销毁的是窗口,而不是窗口类,变量当然还在
    可以这么写
    childWindow * childWindowDlg = new childWindowDlg();
    childWindowDlg->DoModal();

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体