关闭

MFC CWinApp派生类中使用CFrameWnd派生类的成员函数Create来创建窗口

693人阅读 评论(0) 收藏 举报
分类:

在MFC程序中出现的问题是:在CWinApp的派生类中,使用p_MainWnd指向使用new创建的CFrameWnd派生类的对象指针,然后使用该指针调用CFrameWnd的成员函数Create,但是结果并不是我所期望的结果--->指向的是CWinApp的成员函数Create函数--->代码:

  BOOL CTWinApp::InitInstance()
{
 //需要考虑到指针的生命周期
 m_pMainWnd = new CMainWindow();
 //m_PMainWnd->Create(----);出现错误,不是所期望的函数

 if( !m_pMainWnd )
 {
  _tprintf(_T("new CFrameWndfalse\r\n"));
 }

 m_pMainWnd->ShowWindow(m_nCmdShow);
 m_pMainWnd->UpdateWindow();
 return TRUE;

}

那么就解决指针的类型,进行转换,在MFC中使用的静态和动态的指针转换:

dynamic_cast(m_pMainWnd)->MyInit();//检查指针的类型
 //static_cast(p)->MyInit();//不检查指针的类

这样就可以指向CFrameWnd的成员函数了。

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:986761次
    • 积分:17703
    • 等级:
    • 排名:第540名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论