作了一个程序其中包含ms ado控件和ms DataGrid控件我想在主窗口改变大小时也改变控件的大小源码如下
void CADO1View::OnSize(UINT nType, int cx, int cy)
{  int iHeight, iWidth; 
  CRect rect;
  COleDBRecordView::OnSize(nType, cx, cy);
  m_adoDC1.GetClientRect(rect);
  iHeight=rect.Height();
  iWidth=rect.Width();
  m_adoDC1.MoveWindow(cx,cy,iWidth,iHeight,TRUE);
  m_dataGrid1.MoveWindow(0,0,cx,cy-iHeight,TRUE);
}
m_adoDC1是 ms ado control
m_dataGrid1是ms datagrid control
可是程序一运行就提示Debug Assertion Failed!出错。

解决方案 »

  1.   

    if (::IsWindow(m_adoDCl.m_hWnd))
    {
    int iHeight, iWidth; 
      CRect rect;
      COleDBRecordView::OnSize(nType, cx, cy);
      m_adoDC1.GetClientRect(rect);
      iHeight=rect.Height();
      iWidth=rect.Width();
      m_adoDC1.MoveWindow(cx,cy,iWidth,iHeight,TRUE);
      m_dataGrid1.MoveWindow(0,0,cx,cy-iHeight,TRUE);
    }
    程序第一次调用OnSize时m_adoDCl还未实例化
      

  2.   

    同意楼上观点。我的做法是:
    设置一个变量m_bInit,在CADO1View::CADO1View()中设置为FALSE;
    在Oncreate中变成TRUE,然后在ONSIZE中判断一下.
      

  3.   

    你应该看看VIEW类从构造到创建到显示都经过了什么函数,就可以知道问题出在哪里了