为什么RemoveSplash不再是CMainFrame的成员?

时间:2017-12-14 18:03:58

标签: c++ mfc

此代码在Visual C ++ 6.0下运行:

BOOL CSplashWnd::PreTranslateAppMessage(MSG *pMsg)
{
    if (c_pSplashWnd == NULL)
        return FALSE;

    // If we get a keyboard or mouse message, hide the splash screen.
    if ((pMsg->message == WM_KEYDOWN)       ||
        (pMsg->message == WM_SYSKEYDOWN)    ||
        (pMsg->message == WM_LBUTTONDOWN)   ||
        (pMsg->message == WM_RBUTTONDOWN)   ||
        (pMsg->message == WM_MBUTTONDOWN)   ||
        (pMsg->message == WM_NCLBUTTONDOWN) ||
        (pMsg->message == WM_NCRBUTTONDOWN) ||
        (pMsg->message == WM_NCMBUTTONDOWN))
    {
    // let main frame window remove the splash screen so timer is killed &
    // Tip-of-the-Day is displayed (if appropriate)
    CMainFrame *pWnd = (CMainFrame *) AfxGetMainWnd();
    pWnd->RemoveSplash();

        return TRUE;    // message handled here
    }

    return FALSE;   // message not handled
}

现在在Visual Studio 2017中,我收到以下错误消息:

  

错误C2039:'RemoveSplash':不是'CMainFrame'的成员

当我在MSDN中搜索RemoveSplash时,我没有点击...

这曾经是CMainFrame或CFrameWnd的一部分吗?有什么想法吗?

2 个答案:

答案 0 :(得分:8)

CMainFrame从未成为MFC的一部分,而是VS向导为您生成的框架窗口的默认名称。换句话说,这是自定义代码。

答案 1 :(得分:5)

问题是"为什么......?"好吧,你不得不问微软的某个人,我怀疑他们会知道。你问的是1998年发布的产品(6.0)。19年前。从那以后发生了很多变更好的C ++标准符合性,支持Unicode的操作系统等。

自1995年以来,我一直在编写MFC编程。我不记得MFC中内置的启动窗口。其他人将这样的成员添加到CMainFrame类,因为它不是MFC的一部分。它可能来自CFrameWnd或CMDIFrameWnd。在旧的VC ++项目中查看MainFrm.h。