CGridCtrl是CWnd的继承类,故跟其他什么button之类的控件是相似的,可以用DDX_Control或SubClass.如
void CGridCtrlDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGridCtrlDemoDlg)

DDX_Control(pDX, IDC_GRID, m_Grid);
//}}AFX_DATA_MAP
}

解决方案 »

  1.   

    大致方法是这样的:
    在对话框中创建一个Custom Contrl(IDC_GRID),将其Class属性设置为MFCGridCtrl
    在头文件中加入CGridCtrl m_Grid
    在DoDataExchange(CDataExchange* pDX)函数中的//{{AFX_DATA_MAP(CGgttDlg)和
    //}}AFX_DATA_MAP之间加入 DDX_Control(pDX, IDC_GRID, m_Grid);
    在OnInitDialog函数中加入:
       m_Grid.SetRowCount(2); // 以下两行设置表格的行列,必须设置否则出错
       m_Grid.SetColumnCount(5);
       m_Grid.SetCellType(1,1, RUNTIME_CLASS(CGridCell));
       m_Grid.SetItemText(1,1, _T("1"));
       m_Grid.SetItemState(1,1, m_Grid.GetItemState(1,1) & ~GVIS_READONLY);
       m_Grid.Refresh();这样已经能够显示出来表格了,其它的属性设置可以参考下载的源码,没有什么特别困难之处。
      

  2.   

    DDX_Control(pDX, IDC_GRID, m_Grid);
    这句我已经加了,还是不行
    无论我把m_Grid.Create放在哪儿(OnCreate或者InitDialog中)都不行
    在Create的时候会有INT 3 中断,然后就是ASSERT发生错误了
      

  3.   

    不需要调用m_Grid.Create函数,你已经在对话框资源中创建了该控件,并设置了DDX_Control,系统会自动创建的。按照我上面的代码,我已经显示出来表格了。试试看。