CListSelect select; //包含一个list box控件的对话框类
CListBox &list = select.GetListBox(); //获得对话框上list Box控件变量(m_ListBox)的引用
list.AddString(_T("aaaaaaaaaaaaaaa")); // 在listbox上插于一行
select->DoModal();//显示模态 对话框还没有创建,就操作其中的控件?
把这样的书丢掉
CListBox &list = select.GetListBox(); //获得对话框上list Box控件变量(m_ListBox)的引用
list.AddString(_T("aaaaaaaaaaaaaaa")); // 在listbox上插于一行
select->DoModal();//显示模态 对话框还没有创建,就操作其中的控件?
把这样的书丢掉
{
// TODO: Add your command handler code here
CListSelect select; //包含一个list box控件的对话框类
select.Create(IDD_SELECTBOX, this); select.ShowWindow(SW_SHOW);
//select.domodal(); //显示模态
}
这样也不行啊,麻烦你说一下!
还是不行啊,我就想想在domodal()指向初始化list box,别绕了,给几行代码吧
{
// TODO: Add your command handler code here
CListSelect select; //包含一个list box控件的对话框类
CListBox &list = select.GetListBox(); //获得对话框上list Box控件变量(m_ListBox)的引用
list.AddString(_T("aaaaaaaaaaaaaaa"));// 在listbox上插于一行select->DoModal();//显示模态
int nSel = list.CurrentSelect();
... }像这样的代码违背了oop的原则list.AddString(_T("aaaaaaaaaaaaaaa")); // 在listbox上插于一行应该在 CListSelect的InitDialog函数里添加而不是在DoModal()前如果不能事先知道string数组那给CListSelect 添加一个不需要窗口的CStringArray 变量,由CListSelect 在 InitDialog 里初始化添加
难道这样肯定不行吗?
select.List(1);
if(select.domodal() == IDOK)
{
int nCurSel = select.CurSel();
}CListSelect::CListSelect
{
m_nList = 0;
m_nCurSel = 0;
}CListSelect::OnInitDialog()
{
switch(m_nList)
{
case 1:
m_ListBox.AddString("aaaaaaaaaaaaa");
break;
default:
break;
}
if(m_ListBox.GetCount())
m_ListBox.SetCurSel(0);}CListSelect::List(int nList)
{
m_nList = nList;
}
CListSelect::OnOK()
{
m_nCurSel = m_ListBox.GetCurSel();
}
我以前就是这样做的