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
}
void CGridCtrlDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGridCtrlDemoDlg)
DDX_Control(pDX, IDC_GRID, m_Grid);
//}}AFX_DATA_MAP
}
解决方案 »
- 这段代码,为什么VS2008编译通过,VS2005报错
- 请教一个socket暂停的问题
- 为何在Win2000下读CMOS数据正常,写CMOS数据不正确?
- GetProfileInt()WriteProfileString()谁给说说?
- 想做一个聊天室?
- 我在状态栏里面加了一个进度条,如何操纵他阿?
- About MSXML 4.0 Intall!
- Mime filter技术 的疑问,高手请进!
- fatal error C1010: unexpected end of file while looking for precompiled header directive
- 杨建超的基于稀疏表示的超分辨重建
- 关于ListView问题?
- 请问怎样把字符串变量转变成数字变量?
在对话框中创建一个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();这样已经能够显示出来表格了,其它的属性设置可以参考下载的源码,没有什么特别困难之处。
这句我已经加了,还是不行
无论我把m_Grid.Create放在哪儿(OnCreate或者InitDialog中)都不行
在Create的时候会有INT 3 中断,然后就是ASSERT发生错误了