很基础的MFC框架问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 18:09:57
我如下编写程序 弹出了一个空窗口
canvasApp::InitInstance()
{
m_pMainWnd=new CanvasFrame;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}

但是我改为:
canvasApp::InitInstance()
{
CanvasFrame a;
a=new CanvasFrame;
a->ShowWindow(m_nCmdShow);
a->UpdateWindow();
return TRUE;
}
窗口一闪而过 应该是生存周期的问题 查询MSDN得知 m_pMainWnd是个全局变量 当关闭窗口时 关闭线程

我的问题是:m_pMainWnd这个东西 他是怎么实现这些操作的
如果我想自己做一个 类似m_pMainWnd的东西 应该怎么做

谢谢!
哦 不好意思 上面的确是CanvasFrame *a

Detach函数不好用啊 他显示应用程序错误 Detach函数不是用来分离句柄的吗 这里是什么用处

CanvasFrame 继承了CWnd窗口类

你的a是局部变量,生命周期只在InitInstance中,当函数执行完了后自动释放了, m_pMainWnd是一个CWinThread类的成员,做为当前运行线程的,一直会等到线程结束时才会结束,
补充:我这里用的frame的构造函数是protect的,貌似不能生成,如果是自己定义的类,不是由向导生成的类的话那就可以在类成员里加一个成员变量类似m_pmainwnd了。。

canvasApp::InitInstance()
{
CanvasFrame a;
a=new CanvasFrame;
a->ShowWindow(m_nCmdShow);
a->UpdateWindow();
//加上这句看看!!
a->Detach();
return TRUE;
}