project是基于单文档的,在初始化时,就显示一个非模态的对话框,对话框初始显示的时候就存在一个listbox插件。1.我按照网上搜索到的方法,在初始化函数中加入
BOOL CMydlg1::OnInitDialog()
{
CDialog::OnInitDialog();
m_list1.AddString("A"); 
        return TRUE;
}程序运行报错,listbox中没有任何显示
2.在网上也看到很多说法,说此时dialog还未被初始化,要等到初始化之后对其变量赋值,试图采用有人提到的这个方法也不行啊
void CMydlg1::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMydlg1)
DDX_Control(pDX, IDC_EDIT1, m_edit1);
DDX_Control(pDX, IDC_LIST1, m_list1);
//}}AFX_DATA_MAP
                                    
m_list1.ResetContent();      
m_list1.AddString("A");                                
}
3.最后release版本运行通过,同样不显示listbox中添加的内容。希望有人指点,程序菜鸟一名,焦躁一晚上- -还没搞定。

解决方案 »

  1.   

    确认控件都是正确的吗,最好写几条判断语句,看看m_list1的窗口句柄是否有效,再看AddString的返回值是什么,
    顺便在下面调用一下,m_list1.GetCount看看返回多少。
    再看看,你的listbox是不是设置了自绘的风格,
    先说这多吧,看看你的反馈。
      

  2.   

    怎么看我的listbox是不是设置了自绘的风格啊...
      

  3.   

    编辑对话框,在选中listbox查看属性。你其它的都是正常的吗。
      

  4.   

    其他的是什么意思呢~~~listbox的属性里面 勾上的有:has strings,border,sort,notify,vertical scroll,no intergral height,visible,tab stop
      

  5.   

    确认控件都是正确的吗,最好写几条判断语句,看看m_list1的窗口句柄是否有效,再看AddString的返回值是什么,
    顺便在下面调用一下,m_list1.GetCount看看返回多少。 
      

  6.   

    m_list1.AddString( _T("A "));
    如果你用的vs2008的话,应该是这样写。
    我刚好今天也在写listbox控件
    呵呵
      

  7.   

    你写insertstring(_T("A"),-1);试试呢
      

  8.   

    是这样的,我的owner draw 那一行设置成为了fixed ,是因为当初在网上搜,使用addstrings的时候需要设置has strings 这个选项。把 owner draw换成no就好了。