| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 939 人关注过本帖
标题:[求助]请教以下关于MFC中创建窗口问题
只看楼主 加入收藏
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
 问题点数:0 回复次数:4 
[求助]请教以下关于MFC中创建窗口问题

我用基于对话框的MFC程序中,删除默认的CDialog 类,在CWinApp类中的iInitInstance中,删掉对话框类的创建,自己重新建立了一个从CWnd类派生来的类,在CWinApp类中的iInitInstance函数中创建,但是,由于iInitInstance函数调用结束后就结束了程序,CWnd 类对象生命周期结束了,就看不到窗口,不知道有没有想对话框的CDialog::DoModal()那样不马上反回的方法,请大家帮帮忙,有什么办法可以解决.具体代码如下
.

BOOL CMyApp::InitInstance()
{
........
CWnd * pwnd=new My_CWnd
pwnd->CreateEx........
.........
// 现在只能在这里调用一个CDialog::DoModal()函数才可以继续操作窗口
delete pwnd;
return FALSE; //由于返回就结束了程序,自己做的窗口就没用了,跟本就看不见
}

搜索更多相关主题的帖子: MFC 生命周期 窗口 对话框 CWnd 
2006-08-13 17:16
metalord666
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-7-29
收藏
得分:0 
把CWnd * pwnd作为CMyApp的成员应该就可以了吧,这样INITINSTANCE结束了,THEAPP还在
2006-08-13 18:15
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
但是CMyApp调用INITINSTANCE后就结束了程序,退出了

2006-08-13 18:31
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
当CWinApp::InitInstance运行完之后,CWinApp::Run会被调用,在Run函数中,会判断m_pMainWnd是否为NULL,所以你在InitInstance中必须设置m_pMainWnd的值
如果还不行的话你可以按照下面的方法做:由于CWinApp::Run中会调用CWinThread::Run,而在CWinThread::Run中是消息循环,你可以在CWinThread::Run上打断点看看还有什么没有符合框架要求而导致退出的,按照要求改就行了

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-14 09:25
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
恩,谢谢版主

2006-08-14 13:16
快速回复:[求助]请教以下关于MFC中创建窗口问题
数据加载中...
 
   



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

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