框架消失后,进程如何终止的?
刚学MFC,对这种机制搞不明白:
BOOL CHelloApp::InitInstance()
{
m_pMainWnd=new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
};
这个主框架指针m_pMainWnd指向了一个CFrameWindow实例,当点击窗口的关闭时,CHelloWindow()消失,但CHelloApp如何终止的呢?
全部代码如下,没有看到程序是如何终止的,CHelloApp如何知道主窗口已经没了?
#include <AfxWin.h>
class CHelloApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
CHelloApp theApp;
class CHelloWindow:public CFrameWnd
{
CStatic *cs;
public:
CHelloWindow();
};
BOOL CHelloApp::InitInstance()
{
m_pMainWnd=new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
};
CHelloWindow::CHelloWindow()
{
//建立窗口本身
Create(NULL,
"Hello World!",
WS_OVERLAPPEDWINDOW,
CRect(0,0,200,200));
// 建立静态标签
cs = new CStatic();
cs->Create("hello world",
WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(50,80,150,150),
this);
};
问题点数:20、回复次数:6Top
1 楼YaYiYaO()回复于 2006-03-19 14:40:29 得分 10
InitInstance()只是初始化程序
结束后程序进入消息循环中,这个被MFC封装了
当收到程序结束的消息后,循环结束,主函数AfxWinMain返回,程序终止!
可以去看下winmain.cpp文件,AfxWinMain就在这里面Top
2 楼ljyit(木瓜)回复于 2006-03-19 15:00:13 得分 0
几点疑问:
1.一个程序只能有一个CWinApp对像,但一个进程只能有一个CFrameWindow吗?
2.CFrameWindow对像消毁时,它是不是会向进程发送WM_DESTORY消息?如果不是,那么消息循环又是如何结束的?Top
3 楼qkhhgutg(太子)回复于 2006-03-19 15:54:17 得分 0
接分Top
4 楼monk2000(老实和尚)回复于 2006-03-19 17:51:47 得分 10
http://www.vczx.com/tutorial/mfc/mfc6.phpTop
5 楼YaYiYaO()回复于 2006-03-19 18:23:27 得分 0
推荐你去看下侯捷的《深入浅出MFC》,里面对你这个问题解释的比较清楚Top
6 楼ljyit(木瓜)回复于 2006-03-20 08:50:51 得分 0
谢谢老和尚Top




