产生一个基于对话框的程序,在该对话框中放了一列表控件,然后,新建了一个新类
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);
}
//----------------------------------------------------------------
现在想在新建的类中得到对话框的句柄我找不到什么办法,请帮忙!
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);
}
//----------------------------------------------------------------
现在想在新建的类中得到对话框的句柄我找不到什么办法,请帮忙!
运行就错
我想是不是该句柄不对。
所以,你应该
void test()
{HWND hWnd;
CServer1Dlg* dlg=new CServer1Dlg(); //注意*号
hWnd=dlg->m_ListCtrl.GetSafeHwnd(); //因为是对象指针,把.号改成->
CListCtrl* pListCtrl=(CListCtrl*)GetDlgItem(hWnd,IDC_LIST);
delete dlg; //和 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;
应该可以了
CServer1Dlg dlg=new CServer1Dlg();//该类是对话框的类
后面加上
dlg->Create(ID); /* ID表示CServer1Dlg类对应的对话框的ID */