CListSelect select; //包含一个list box控件的对话框类
CListBox &list = select.GetListBox(); //获得对话框上list Box控件变量(m_ListBox)的引用
list.AddString(_T("aaaaaaaaaaaaaaa"));  // 在listbox上插于一行
select->DoModal();//显示模态 对话框还没有创建,就操作其中的控件?
把这样的书丢掉

解决方案 »

  1.   

    以前没怎么用过mfc,朋友说说,怎么用?
      

  2.   

    clist select这样定义一个局部变量难道没有创建对话框的实例吗?
      

  3.   

    void CESDASView::OnChannelNew() 
    {
    // TODO: Add your command handler code here
    CListSelect select; //包含一个list box控件的对话框类
    select.Create(IDD_SELECTBOX, this); select.ShowWindow(SW_SHOW);
    //select.domodal(); //显示模态
    }
    这样也不行啊,麻烦你说一下!
      

  4.   

    用了create(IDD_SELECTBOX, this)
    还是不行啊,我就想想在domodal()指向初始化list box,别绕了,给几行代码吧
      

  5.   

    void CESDASView::OnChannelNew() 

    // 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 里初始化添加
      

  6.   

    我原来就是在clistselect中设置了一个标志,当初始化时读取这个标志,来确定显示那些内容!
    难道这样肯定不行吗?
      

  7.   

    我不知道这个标志怎么设置的不过照上面的方法,添加CStringArray 变量  m_strArray后在DoModal前 给m_strArray添加String那么DoModal在创建窗口后,运行InitDialog函数就能加载m_strArray
      

  8.   

    CListSelect select;
    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();
    }
    我以前就是这样做的