我试了所有的都不行

guo_da_hai 2002-10-25 12:48:56
产生一个基于对话框的程序,

在该对话框中放了一列表控件,

然后,新建了一个新类
CXXX:CSocket
{
void test();//函数
}
//想在该函数中得到列表控件中的内容,请看看我写的,但是运行是错误
void test()
{

HWND hWnd;
CServer1Dlg dlg=new CServer1Dlg();//该类是对话框的类
hWnd=dlg.m_ListCtrl.GetSafeHwnd();//dlg.GetSafeHwnd()也试过,不对
CListCtrl* pListCtrl=(CListCtrl*)GetDlgItem(hWnd,IDC_LIST);
}
//----------------------------------------------------------------
现在想在新建的类中得到对话框的句柄

我找不到什么办法,请帮忙!
...全文
37 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guo_da_hai 2002-10-25
  • 打赏
  • 举报
回复
我调试时,他告诉我hWnd=???
我想是不是该句柄不对。
guo_da_hai 2002-10-25
  • 打赏
  • 举报
回复
int m_ListCount=pListCtrl->GetItemCount();
运行就错
ruihuahan 2002-10-25
  • 打赏
  • 举报
回复
CWnd专门有一组操纵对话框上控件的函数,其中的GetDlgItem()用来取得控件的CWnd指针。
wtzyb4446 2002-10-25
  • 打赏
  • 举报
回复
你的做法是显示非模态对话框的方法,new之后需要create,你应该在
CServer1Dlg dlg=new CServer1Dlg();//该类是对话框的类
后面加上
dlg->Create(ID); /* ID表示CServer1Dlg类对应的对话框的ID */
runaway 2002-10-25
  • 打赏
  • 举报
回复
不要new
new的是另外一个实例
当然会报错
CXXX:CSocket
{
void test();//函数
public:
CServer1Dlg dlg;//该类是对话框的类
}
//想在该函数中得到列表控件中的内容,请看看我写的,但是运行是错误
void test()
{

HWND hWnd;
hWnd=dlg.m_ListCtrl.GetSafeHwnd();//dlg.GetSafeHwnd()也试过,不对
CListCtrl* pListCtrl=(CListCtrl*)GetDlgItem(hWnd,IDC_LIST);
}
在CServer1Dlg中初始化CXXX时
CXXX.dlg=this;
应该可以了
双杯献酒 2002-10-25
  • 打赏
  • 举报
回复
new出来的是指针,不是对象,
所以,你应该
void test()
{

HWND hWnd;
CServer1Dlg* dlg=new CServer1Dlg(); //注意*号
hWnd=dlg->m_ListCtrl.GetSafeHwnd(); //因为是对象指针,把.号改成->
CListCtrl* pListCtrl=(CListCtrl*)GetDlgItem(hWnd,IDC_LIST);
delete dlg; //和 new对应
}
LinHanLao 2002-10-25
  • 打赏
  • 举报
回复
你用CServerDlg *dlg试一下

16,472

社区成员

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

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

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