我有一个基于对话框的程序,利用ado操作数据库,并在GridCtrl中显示出来.
//在OnInitDialog()中初始化GridCtrl
   CString fields[]={"料号","料品名称","料品规格","供应形态","仓库代号","现存量","预约量"};
   m_grid.SetColumnCount(7);
   m_grid.SetFixedRowCount(1);
   m_grid.SetRowResize(FALSE);
   //m_grid.SetRowCount(20);
   
  //设置标题栏的字段值
   for( i=0; i<7; i++ )
   {
        GV_ITEM Item;
Item.mask = GVIF_TEXT|GVIF_FORMAT;
Item.row = 0;
Item.col = i;
Item.nFormat =    DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.szText.Format(_T("%s"),fields[i]);
m_grid.SetItem(&Item);
   }
..........数据库连接成功,并且能够显示正确的结果来,但是当我的鼠标移到第一行或是有数据显示的行时,就会发生异常中断,显示ASSERT错误.
不能通过ASSERT地方为CTitleTip.cpp的show(,,,)中的
ASSERT( ::IsWindow( GetSafeHwnd() ) );
请问原因出在何处?

解决方案 »

  1.   

    控件本身没有问题,我用过开发
    甚至使用VirturalList模式
    可能你的其他地方设置有误1
      

  2.   

    我其他的地方没怎么设置,我也是看了别人的介绍做的
    是不是在初始化的时候有问题?
    有一点不同的是我
    DDX_Control(pDX,IDC_GRID,m_grid);是放在
    //{{AFX_DATA_MAP(CMyDlg)
    //}}AFX_DATA_MAP
    之外,
    出现这样的问题可能是内存泄漏导致的,可是我并没有用到指针呀.
      

  3.   

    老兄,用CListCtrl试一下,我用过,自认为不错。若有兴趣,我可以提供源代码。
      

  4.   

    CGridCtrl,这个ME正在用,没什么问题的。
      

  5.   

    谢谢3467800
    我的email:[email protected]
      

  6.   

    我也正在用,没什么问题吧,唯一不同的是我写的是DDX_GridControl(pDX, IDC_DBGRID, m_Grid);多了一个Grid顺便问一下,用ADO连接数据库,有什么好的方法把数据与
    GridCtrl连接起来?因为我不需要拖动、选中改变颜色等功能,如果没有好的方法,那不
    与CListCtrl一样了?
      

  7.   

    当时窗口还没有显示出来,你可以试试,在Release模式下可以,不过还是你代码有问题,代码的位置。IsWindow()不是给你提醒了么。