我创建了一个基于dialog的对话框,在主窗口有一个按钮,想按这个按钮后弹出子窗口,子窗口中有listctrl表关联成员m_sublist,在子窗口的OnInitDialog()进行初始化。结果到这个子窗口的OnInitDialog()时后就程序挂了,不知道什么原因?
主窗口里有子窗口的对象CSub m_sub;对主窗口botton相应m_sub.domodal()。
主窗口里有子窗口的对象CSub m_sub;对主窗口botton相应m_sub.domodal()。
解决方案 »
- 两个点之间进行线性插值问题
- CComboBox控件中的获取问题
- win32 sdk下mdi中的按钮响应不了 WM_COMMAND消息
- 为什么我用Event事件不能fire
- 关于WaitForSingleObject。,CreateEvent和CloseHandle
- 请教MFC中如何定义一个结构体,要求选中结构体一部分候,显示另一部分
- 请问:word文档怎么转化成bmp(图形)文件呢
- [求助]怎样注入一个进程
- win32中,我想自绘STATIC,如何做?有例子最好
- 请问各位在Windows环境下都用什么编写C++程序?(不要回答VC,要小巧玲珑的那种)
- VC6 AfxSocketInit()失败,请问原因?
- 怎样在窗口上贴图
继续说明:原因好像是m_sublist为零,所以无法操作初始化。
所以问题是如何弹出含有list表的子对话框呢,怎么初始化list表?
void CDialogDlg::OnBtOk()
{
// TODO: Add your control notification handler code here
m_sub.DoModal();
}这是子对话框的初始化
BOOL CSub::OnInitDialog()
{
m_sublist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );//err,m_sublist空值 m_sublist.InsertColumn(0,_T("index"),LVCFMT_LEFT,60);
m_sublist.InsertColumn(1,_T("name"),LVCFMT_LEFT,60);
m_sublist.InsertColumn(2,_T("age"),LVCFMT_LEFT,60); char sz[5]={0};
for (int i=0;i<5;i++)
{
sprintf(sz,_T("%d"),i);
m_sublist.InsertItem(i,sz);
m_sublist.SetItemText(i,1,sz);
m_sublist.SetItemText(i,2,sz);
}
return true;
}
上面第一行写错了,是:这是主话框的botton函数
继续说明:原因好像是m_sublist为零,所以无法操作初始化。
所以问题是如何弹出含有list表的子对话框呢,怎么初始化list表?
=================
我试了一下,发现是可以工作的啊,并不你所说的问题啊
//{{AFX_DATA(CSub)
enum { IDD = IDD_SUB_DIALOG };
CListCtrl m_sublist;
//}}AFX_DATA
这里是我的代码里生成的关联成员。
我没明白ls的意思。
AfxInitRichEdit()这个函数干什么用的啊?和CListCtrl有关吗?
===============
对MFC来说,ListCtrl控件并不用特殊的初始化
//{{AFX_DATA(CSub)
enum { IDD = IDD_SUB_DIALOG };
CListCtrl m_sublist;
//}}AFX_DATA
这里是我的代码里生成的关联成员。
我没明白ls的意思。
AfxInitRichEdit()这个函数干什么用的啊?和CListCtrl有关吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++
和CListCtrl没有关系,是初始化RichEdit控件的.你的程序在我这里运行的没有问题!
忘了问了,这个是什么作用啊
估计楼主应该是自己手动写的.如果在CSub类上使用添加Windows Message Handler中的WM_INITDIALOG就不会出现这种错误了.
CDialog::OnInitDialog();但这句话什么做用呢?
不过,还是谢谢你啊