标题:为什么我的APP对像自动销毁了
只看楼主
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
结帖率:100%
 问题点数:0 回复次数:60 
为什么我的APP对像自动销毁了
我自己设计了一个窗口,想让此窗口显示出来的可是窗口刚显示出来马上就消失了,请问下高手们应该怎么做才可以让此窗口显示出来不消失
呢? 直到我点了窗口右上角的叉叉关闭窗口时才结束进程。

  具体代码如下:

1,我用vs2008先创建了一个windows项目 名为:mi gong

2,创建了一个头文件 名为:mi gong.h  头文件里面包含了 #include<afxwin.h>

3,设置了项目 以静态方式访问MFC

4,新建了资源文件名为:mi gong.rc

5,添加了主程序类 mi gong app,代码如下:
class migongapp :
    public CWinApp
{
public:
    BOOL InitInstance();
    CWnd* okk;        ///添加指向主窗口类的成员指针
    migongapp(void);
    ~migongapp(void);
   
};

6,添加了窗口类 mi gong wnd,代码如下:
class migongwnd :
    public CFrameWnd
{
public:
    migongwnd(void);
   
    ~migongwnd(void);
};

并在构造函数中使用create函数创建一个窗体代码如下:

migongwnd::migongwnd(void)
{
    Create(NULL,"迷宫测试");
    ::AfxMessageBox("wnd对像创建成功");
}

7,然后在mi gong app 窗口中先创建了一个对像

  migongapp myapp;
 
然后从写InitInstance函数代码如下:

BOOL migongapp::InitInstance()
{
   
   
   
    myapp.okk=new migongwnd;            //在堆中新建了一个窗口对像交给migongapp类的成员指针OKK保存,同时调用migongwnd类的构造                                        //函数中的create函数来创建了一个窗口。
   
    myapp.okk->ShowWindow(m_nCmdShow);  //显示该窗口
    myapp.okk->UpdateWindow();          //更新窗口
   
    return true;

}

8,然后在migongapp的析构函数中添加delete okk; okk=NULL; //程序结束时释放对像空间

9,然后运行程序 此窗口刚刚显示出来就消失了 程序结束了,可是当我把OKK指针换成migongapp.m_pMainWnd指针的时候此窗口就不会消失 程序也不会自动结束了,代码如下:

BOOL migongapp::InitInstance()
{
   
   
   
    myapp.m_pMainWnd=new migongwnd;            //在堆中新建了一个窗口对像交给migongapp类的成员指针OKK保存,同时调用migongwnd
                                            // 类的构造函数中的create函数来创建了一个窗口。
   
    myapp.m_pMainWnd->ShowWindow(m_nCmdShow);  //显示该窗口
    myapp.m_pMainWnd->UpdateWindow();          //更新窗口
   
    return true;

}



   我的问题就是okk和m_pMainWnd 二个指针都是指向CWnd类的指针为什么我用OKK保存对像就不行,而用m_pMainWnd指针保存对像窗口就可以
就不会消失呢? 我是新手不要笑我哈。。。希望高手指点下 谢了!



来源: http://www.
搜索更多相关主题的帖子: 项目 windows include public 
2011-11-26 14:10
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
得分:0 
回复 楼主 ttkx888
看在我写了这么多字的份上高手们告诉下我原因啊。。。。难道没有高手知道吗
2011-11-26 23:48
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
得分:0 
回复 楼主 ttkx888
实在是找不到原因了 百度了N次也找不到答案,就没有好心人帮忙解答下吗
2011-11-27 11:08
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
得分:0 
回复
唉 这个网站这么垃圾啊想请教个问题都二天了也没有一个人能帮忙解答下的失望
2011-11-27 14:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你用别人的框架,却不按照别人的要求来
2011-11-28 08:12
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
这个了论坛的水平的确不是很高,不过也不至于你用垃圾把

我行我乐
我的博客:
http://blog.yuccn. net
2011-11-29 12:20
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
BOOL migongapp::InitInstance()
{   
    myapp.m_pMainWnd=new migongwnd;            //在堆中新建了一个窗口对像交给migongapp类的成员指针OKK保存,同时调用migongwnd
                                            // 类的构造函数中的create函数来创建了一个窗口。  
    myapp.m_pMainWnd->ShowWindow(m_nCmdShow);  //显示该窗口
    myapp.m_pMainWnd->UpdateWindow();          //更新窗口
   
    return true;
}

在程序初始化好了的时候,myapp.m_pMainWnd 就已经是指向了一个视图对象了的,没有必要你去创建。这个有个错误


CWnd* okk;        ///添加指向主窗口类的成员指针
这个有什么要这个指针?这个是完全没有必要的

如果你是用vs建立起来的工程,你什么都不用做就是用它的向导就可以完成一个工程了。没有你动手增加那么多

我行我乐
我的博客:
http://blog.yuccn. net
2011-11-29 12:30
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
得分:0 
回复 7楼 yuccn
我想问的是难道不用系统自带的m_pManWnd指针是不是就创建不出来一个可以不消失的窗体呢? 为什么一定就得用继承过来的m_pManWnd指针来保存新建的窗体对像才可以让窗体显示出来而不是瞬间显示后就消失呢? 我想肯定有办法可以用自己新建的指针来保存新窗口同时也可以让窗口显示出来而不被析构掉的。。如果没有人知道怎么做 都是让我用系统自带的m_pManWnd指针来保存窗体的话就没必要再回贴了,因为根本就没懂我发这贴子的意义,我也知道用那个m_pManWnd指针可以正常让程序运行  但是我想请教的问题是我想建一个自己的m_pManWnd指针来保存窗体同时也达到窗体显示后不会被析构的效果 我相信程序是万能的这个小问题肯定有人能解决的了,如果没人可以解决这问题那只能说没有高手罢了 就让此贴沉了吧。。相信有一天我自己能解决这个问题的时候我再自己发代码上来/
2011-11-29 14:46
ttkx888
Rank: 1
等 级:新手上路
帖 子:45
专家分:3
注 册:2009-6-6
得分:0 
回复 5楼 rjsp
说白了我就是想知道系统是怎么利用m_pManWnd指针让窗体显示出来而不被析构掉的,我想学的是知识 而不是让别人牵着鼻子走 为什么都要按他们安排好的来做事? 我想学会的是他们是怎么做到这点的这才是我发贴的主要目的,望那些希望跟别人后面走的朋友不要回贴了,这个网站让我很失望 这么简单的一个问题几天了竟然都没有人可以搞定。
2011-11-29 14:55
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
这个论坛不适合你这种菜鸟吧
什么都不懂,写什么程序
一边玩泥沙去

我行我乐
我的博客:
http://blog.yuccn. net
2011-11-29 16:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356278-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118596 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved