//////////////////////////////////////////////
在 CMainFrame::OnCreateClient中创建如下切分窗口://创建一个静态分栏窗口,分为三行一列 
if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) 
return FALSE;
……
//将第1行0列再分开1行2列 
if(m_wndSplitter2.CreateStatic&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE, m_wndSplitter1.IdFromRowCol(1, 0))==NULL) 
return FALSE; 
……
//设置分栏大小
int m_nScreenWidth;
m_nScreenWidth = ::GetSystemMetrics(SM_CXSCREEN);
if ( m_nScreenWidth==800 )
{
m_wndSplitter1.SetRowInfo( 0, 20, 0);
m_wndSplitter1.SetRowInfo( 1, 205, 0);
}
else if ( m_nScreenWidth==1024 )
{
m_wndSplitter1.SetRowInfo( 0, 20, 0);
m_wndSplitter1.SetRowInfo( 1, 370, 0);
} _____________
|      1      |
 -------------
|  2 |    3   |
|    |        |
 -------------
|      4      |
|             |
 -------------////////////////////////////////////////////////////
我想在程序运行时 用户能够通过点一个按钮来把上图的第4个分窗搞小一点:
代码如:CMainFrame::SwitchBottom(bHide)
{
    ……
    m_wndSplitter1.SetRowInfo( 1, 500, 0);  《--编译可以通过,可是运行到这里就出错!只有重试、终止、取消3个按钮!!
    ……
}///////////////////////////////////////////
我应该怎么做才可以挑战4号窗口的大小

解决方案 »

  1.   

    void CSplitterWnd::SetRowInfo(int row, int cyIdeal, int cyMin)
    {
    ASSERT_VALID(this);
    ASSERT(row >= 0 && row < m_nMaxRows);   <--------这句过不去啊
    ASSERT(cyIdeal >= 0);
    ASSERT(cyMin >= 0); m_pRowInfo[row].nIdealSize = cyIdeal;
    m_pRowInfo[row].nMinSize = cyMin;
    }
      

  2.   

    问题已经被我换了种很麻烦的方式解决了我想请教一下:在VIEW里面 调用MAINFRM类里面的公有方法 
    在某些情况下
    为什么会在运行时产生错误  应该怎么解决?