CSplitterWnd:RecalcLayout导致窗口关闭

时间:2014-08-12 12:11:07

标签: c++ csplitterwnd

我刚刚继承了一个代码项目,由于某种原因,它构建的可执行文件在运行后立即关闭。没有人知道为什么会这样,因为在项目被提供给我之前,它已经建立并运行良好,但这既不在这里也不在那里。

所以不知道项目是如何工作的,我已经接近尝试调试这个问题并将其削减到包含此代码:

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()引起的。如果我注释掉那一行,那么窗口加载正常,但所有按钮都显示为灰色,如果我尝试调整面板大小,那么应用程序崩溃。

对不起,我不能更详细,但我自己对这段代码很陌生。所以我的问题是任何人都可以想到包含该行会导致这种影响的任何情况吗?由于代码显然没有任何变化,因为它最后一次工作我除此之外什么都没有我已经解释过了。

感谢任何人提供的任何帮助!

0 个答案:

没有答案