可不可以在一个对话框函数中给另一个对话框的listbox控件赋值

来源:百度知道 编辑:UC知道 时间:2024/06/14 20:53:54
莪要在一个对话框函数中给别另一个对话框的listbox控件赋值。当第一个对话框热行第二个对话框的domodal()函数时listbox就显示赋的值

解决这个问题办法很多,说一个常用的吧。

设第2个对话框类叫CDialog2,listbox的控件ID叫做IDC_DIALOG2_LISTBOX

给第2个对话框里加个成员变量 CStringArray m_sBuffer;简便启见把它声明成public
重载CDialog2的对话框初始化函数:
BOOL CDialog2::OnInitDialog()
{
CDialog::OnInitDialog();
CListBox *pListBox;
int i,Cnt;
pListBox=(CListBox *)GetDlgItem(IDC_DIALOG2_LISTBOX);//更简便的方法是从类向导里加一个关联的控制变量
Cnt=m_sBuffer.GetSize();
for(i=0;i<Cnt;i++) pListBox->AddString(m_sBuffer[i]);
m_sBuffer.RemoveAll();//用完清除,根据你的需要可以不清
……
return TRUE;
}

下面再说说怎么用:
设第2个对话框类的对象叫CDialog2 m_Dialog2;
在你执行对话框2的DoModal之前把你要显示的值加到m_Dialog2.m_sBuffer里面

m_Dialog2.m_sBuffer.Add("我要显示的第一项");
m_Dialog2.m_sBuffer.Add("我要显示的第二项");
m_Dialog2.m_sBuffer.Add("我要显示的第三项");
……
m_Dialog2.DoModal();

知道哪个对话框上listbox 窗口的句柄就可以。
给他发送消息就能执行对listbox的所有操作。
如果要它在domodal 的时候就显示,那就在第二个对话框里面设置变量数据,在第一个对话框的函数里面修改这些变量数据才行。

CSecondDlg