我刚刚继承了一个代码项目,由于某种原因,它构建的可执行文件在运行后立即关闭。没有人知道为什么会这样,因为在项目交给我之前,它构建并运行良好,但这既不是这里也不是那里。
因此,在不知道该项目是如何工作的情况下,我尝试调试此问题并将其缩减为包含以下代码:
CMyApp* pApp = (CMyApp*)AfxGetApp();
ShowWindow(SW_SHOW);
UpdateWindow();
if ( !pApp->RestoreWindowPos( this, MAINFRAME_POSITION_ENTRYNAME ) )
{
MoveWindow( CRect(0,0,636,470) );
}
CRect rect(0,0,0,0);
GetClientRect(&rect);
int nWidth = pApp->GetProfileInt(_T("Settings"), QUEUESVIEW_SPLITTER_WIDTH, 200 );
m_wndSplitter.SetColumnInfo( 0, nWidth, 50 );
nWidth = pApp->GetProfileInt(_T("Settings"), EXTENSIONSVIEW_SPLITTER_WIDTH, 200 );
m_wndSplitter.SetColumnInfo( 1, nWidth, 50 );
m_wndSplitter.RecalcLayout();
现在,加载的窗口应该被分成四个面板(两列,两行),可以看到这清楚地处理了每个面板的位置和大小。该问题具体是由最后一行引起的m_wndSplitter.RecalcLayout()
。如果我注释掉那一行,则窗口加载正常,但所有按钮都显示为灰色,如果我尝试调整面板大小,则应用程序崩溃。
对不起,我不能更详细,但我自己对这段代码很陌生。所以我的问题是,任何人都可以想到包含该行会导致这种影响的任何情况吗?由于自上次工作以来代码显然没有任何变化,除了我已经解释过的内容外,我没有什么可做的。
感谢任何人都可以提供的任何帮助!