[英]MFC Application don't display toolbar outside Visual Studio
我使用Visual Studio 2015创建的MFC应用程序存在一个奇怪的问题。
如果我通过本地Windows调试器在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;
}
我已经用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;
到方法的结尾。 之后,将显示条。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.