CListCtrl的问题?(在线)

userxk 2005-05-27 03:13:27
我在对话框(CSgipConDlg类)里放了一个CListCtrl控件(IDC_SEND),现想在另一个 SGIPPRO.CPP里实现对CListCtrl控件(IDC_SEND)插入数据,正确的实现方法应该是???
...全文
254 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
luolovegui 2005-05-28
  • 打赏
  • 举报
回复
唉!同情自己,建议楼主给分的时候别人也分点红。不要全给了一个人了。不然的话以后谁对你的帖子感兴趣。
kugou123 2005-05-27
  • 打赏
  • 举报
回复
如果你的CSgipConDlg类是主对话框类,在该类中,把你的CListCtrl绑定一个控件变量,你可以用AfxGetMainWnd获取主对话框指针,然后:

CSgipConDlg *pDlg=(CSgipConDlg *)AfxGetMainWnd();
pDlg->m_ListCtrl.InsertItem(……);

即可
modena 2005-05-27
  • 打赏
  • 举报
回复
你没有理解模式对话框的概念,模式对话框的生存期只在DoModal中的,最好你先理解它和无模式对话框的区别。你找书看看吧(《Visual C++技术内幕》)
我估计你要实现的目标应该通过无模式对话框实现的。
userxk 2005-05-27
  • 打赏
  • 举报
回复
可我的g_ConDlg是定义在SGIPPRO.CPP里的全局变量呀!
modena 2005-05-27
  • 打赏
  • 举报
回复
向导创建的对话窗体一般是模式对话框,你查找该对话框DoModal的位置,在该对话框DoModal之后,该对话框已经被销毁,已经无法控制该对话框内控件显示的内容,所以应该把你的数据在new之后,DoModal之前赋值给g_ConDlg的成员变量,并在g_ConDlg的OnInitDialog内完成初始化操作,这之间是不能变更控件的内容的,除非你有另外一个线程在动态处理
userxk 2005-05-27
  • 打赏
  • 举报
回复
向导创建的对话窗体.
modena 2005-05-27
  • 打赏
  • 举报
回复
首先你需要确定你需要的是模式还是无模式
userxk 2005-05-27
  • 打赏
  • 举报
回复
能给个详细的解决办法吗?
modena 2005-05-27
  • 打赏
  • 举报
回复
如果是无模式对话框,那么在new和create后使用你的代码是没有问题了
如果是模式对话框,那么必须把你的数据在new之后,DoModal之前赋值给g_ConDlg的成员变量,并在g_ConDlg的OnInitDialog内完成初始化操作
modena 2005-05-27
  • 打赏
  • 举报
回复
CSgipConDlg *g_ConDlg;
此时g_ConDlg只是一个空指针,并不是一个窗口,内部所有控件均是无效值,所以访问必定会出错
userxk 2005-05-27
  • 打赏
  • 举报
回复
道底是什么问题??????
userxk 2005-05-27
  • 打赏
  • 举报
回复
不行呀!还必需象下面这样,定义成CSgipConDlg sdlg;会运行出错.
CSgipConDlg *g_ConDlg;
int nItem = ((CListCtrl*)g_ConDlg->GetDlgItem(IDC_SEND))->InsertItem(1, _T(""));
((CListCtrl*)g_ConDlg->GetDlgItem(IDC_SEND))->SetItemText(nItem, 1, _T("xiao"));
但是还是插不了数据
legendhui 2005-05-27
  • 打赏
  • 举报
回复
CSgipConDlg sdlg;
((CListCtrl*)sdlg.GetDlgItem(IDC_SEND))->InsertItem();
jingyad 2005-05-27
  • 打赏
  • 举报
回复

例如在SGIPPRO.CPP中可以出现这样的代码:
pList = theApp.GetDlgListCtrl();

App类中实现一个公有的函数
CListCtrl* GetDlgListCtrl()
{
return (CListCtrl*)(m_pMainDlg->GetDlgItem(IDC_LIST1));
}
一般App里面会有dialog的对象了吧
qrlvls 2005-05-27
  • 打赏
  • 举报
回复
((CListCtrl*)m_gipConDlg.GetDlgItem(IDC_SEND))->InsertItem(...)
luolovegui 2005-05-27
  • 打赏
  • 举报
回复
对,只要想办法搞到指针就行了。

请问你这个两个类是怎么调用的。
你可以在SGIPPRO.CPP所在文件类里定义一个CListCtrl *m_p,然后在CSgipConDlg类里给这个类变量赋值就能用了。
bohut 2005-05-27
  • 打赏
  • 举报
回复
得到放置ListCtrl的窗口的句柄,通过该句柄操作ListCtrl
userxk 2005-05-27
  • 打赏
  • 举报
回复
我也知道呀!可是怎么搞呢?
jingyad 2005-05-27
  • 打赏
  • 举报
回复

想办法搞到指向控件的指针

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧