MFC应用程序不显示Visual Studio外部的工具栏

时间:2017-07-14 05:45:21

标签: c++ visual-studio mfc

我在使用Visual Studio 2015创建的MFC应用程序时遇到了一个奇怪的问题。

如果我通过Local Windows Debugger在Visual Studio中运行应用程序,一切都按预期工作。

如果我在Visual Studio外部启动生成的.exe文件,则工具栏和状态栏不会显示在主机中。我无法通过“查看菜单”激活它们。因此,当我使用将文本写入状态栏的菜单点时,我的应用程序崩溃。

有人现在问题吗?

也许我不知道我应该在问题中显示哪些代码随意询问评论中的特定代码部分。我将编辑问题并提供代码。

这是创建工具栏和状态栏的代码。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        //TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

    m_wndToolBar.LoadTCToolBar(16, IDB_TOOLICONS, IDB_TOOLICONS_HOT, IDB_TOOLICONS_DISABLED, RGB(255, 0, 255));

    if (!m_wndStatusBar.Create(this))
    {
        //TRACE0("Failed to create status bar\n");
        return -1;      // fail to create
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));

    return 0;
}

1 个答案:

答案 0 :(得分:0)

我已经通过OnCreate方法中的简单代码重新排列解决了问题。

方法现在看起来像这样:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{


    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        //TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

    m_wndToolBar.LoadTCToolBar(16, IDB_TOOLICONS, IDB_TOOLICONS_HOT, IDB_TOOLICONS_DISABLED, RGB(255, 0, 255));

    if (!m_wndStatusBar.Create(this))
    {
        //TRACE0("Failed to create status bar\n");
        return -1;      // fail to create
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));

    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    return 0;
}

我不得不移动线

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
            return -1;

到方法的结尾。之后显示条形图。