大侠们帮我看一下下面这段代码:
void CGPACalculatorDlg::OnSelchangeComboStandard() 
{
// TODO: Add your control notification handler code here int nIndex=m_cmbStandard.GetCurSel();
if(4==nIndex)
SetEditRead(false);         //如果nIndex为4设为可读写,不为4只读
else
SetEditRead(true);
ChangeType(nIndex);                   
UpdateData(false);
}
可是程序运行时我在下拉菜单找不到有任何内容,这个应该怎么办啊?还有一段代码:
CListBox m_ListScore;
m_ListScore.ResetContent();//清空m_ListScore ;
m_ListScore.AddString("序号  成绩  学分  标准");
m_ListScore.AddString("---------------------");       while(i<size)
{
CString str;
str.Format(" %d  %0.2d  %0.2d  %0.2d",
i+1,
arScore.GetAt(i).dOPoint,
arScore.GetAt(i).dNum,
arScore.GetAt(i).dSPoint);
i++;
m_ListScore.AddString(str);
}结果在列表框里显示如下:---------------------
1  00 1079246848 00
2  00 1079492608 00
3  00 1078362112 00
4  00 1079394304 00
5  00 1079164928 00
序号  成绩  学分  标准我不知道为什么“序号  成绩  学分  标准”会在里表的最后一行,而且输出的数据几乎是一堆乱码请大虾们指点下这两个问题,不胜感激!      

解决方案 »

  1.   

    将Combo的Sort属性设置为FALSE,这样他就不会自动排序了,而是按你的插入顺序来显示
      

  2.   


    正解。去掉LISTBOX默认的LBS_SORT窗口风格。
      

  3.   

    可是程序运行时我在下拉菜单找不到有任何内容,这个应该怎么办啊? 
    ==================================
    CComboBox里面是空的吗?在OnInitDialog()里面添加,看看是不是都加上了。第二个问题是你允许它排序了,禁止它排序。
      

  4.   

    第二个问题,将CListBox的sort属性去掉
      

  5.   

    这种列表用listctrl不是更加好些?????
    listbox不怎么适合多列数据的...............
      

  6.   

    没有任何内容 可能是下拉框不够大 朝下在拉拉~~~
    列表listBox 的自动排序功能去掉
      

  7.   

    LS的应该是dwstyle  &= ~CBS_SORT; 吧
      

  8.   

    LS,这样的话便一起会报错。说DWORD和dwstyle没有定义啊。。
      

  9.   


    DWORD dwstyle  = GetWindowLong(m_ListScore.m_hWnd,GWL_STYLE); 
    dwstyle  &=  ~CBS_SORT; 
    SetWindowLong(m_ListScore.m_hWnd,GWL_STYLE,dwstyle); 
      

  10.   

    首先不要楼上诸位的方法,把排序去掉。
    然后把AddString改成InsertString,第一个参数设为-1,即每次都添加到最后。
    至于中文的乱码,可能是由于Unicode,若用Unicode字符集,显示中文要用WideCharToMultiByte转为多字节。
      

  11.   

    谢谢各位,第二段代码的问题已得以解决,现在就是第一段代码:
    void CGPACalculatorDlg::OnSelchangeComboStandard() 

    // TODO: Add your control notification handler code here int nIndex=m_cmbStandard.GetCurSel(); 
    if(4==nIndex) 
    SetEditRead(false);        //如果nIndex为4设为可读写,不为4只读 
    else 
    SetEditRead(true); 
    ChangeType(nIndex);                  
    UpdateData(false); 
    } 不知道为什么即使我把
    //if(4==nIndex) 
    //SetEditRead(false);        //如果nIndex为4设为可读写,不为4只读 
    //else 
    这三行代码都注释起来,也就是把编辑控件设为只读属性,编辑控件还是可以写入内容。。
    void CGPACalculatorDlg::SetEditRead(bool bReadOnly)
    {
    (((CEdit*)GetDlgItem(IDC_EDIT_S1))->SetReadOnly(bReadOnly));
    (((CEdit*)GetDlgItem(IDC_EDIT_S2))->SetReadOnly(bReadOnly));
    (((CEdit*)GetDlgItem(IDC_EDIT_S3))->SetReadOnly(bReadOnly));
    }
    大虾给解答下
      

  12.   

    你确定OnSelchangeComboStandard函数运行了吗?
    另外ChangeType函数里面都做了什么工作?
      

  13.   

    去掉LISTBOX默认的LBS_SORT窗口风格
      

  14.   


    void CGPACalculatorDlg::ChangeType(int nType)
    {
    switch(nType)
    {
    case 0:
    case 4:
    m_dS1=m_dS2=m_dS3=m_dS4=m_dS5=m_dS6=m_dS7=0;
    m_dO1=m_dO2=m_dO3=m_dO4=m_dO5=m_dO6=m_dO7=m_dO8=0;
    break;
    case 1:
    m_dS1=4;
    m_dS2=3;
    m_dS3=2;
    m_dS4=1;
    m_dS5=m_dS6=m_dS7=0;
    m_dO1=100;
    m_dO2=90;
    m_dO3=80;
    m_dO4=70;
    m_dO5=60;
    m_dO6=m_dO7=m_dO8=0;
    break;
    case 2:
    m_dS1=4.3;
    m_dS2=4.0;
    m_dS3=3.7;
    m_dS4=3.3;
    m_dS5=3.0;
    m_dS6=2.7;
    m_dS7=2.3;
    m_dO1=100;
    m_dO2=90;
    m_dO3=85;
    m_dO4=80;
    m_dO5=75;
    m_dO6=70;
    m_dO7=65;
    m_dO8=60;
    break;
    case 3:
    m_dS1=4;
    m_dS2=3;
    m_dS3=2;
    m_dS4=m_dS5=m_dS6=m_dS7=0;
    m_dO1=100;
    m_dO2=85;
    m_dO3=70;
    m_dO4=60;
    m_dO5=m_dO6=m_dO7=m_dO8=0;
    break;
    }
    }我试图插入断点,单步运行,但是程序就进入了WinMain函数
      

  15.   


    还有,我的那个OnSelchangeComboStandard() 添加的控件函数,不是在点击控件时候就会调用么?
      

  16.   

    你的OnSelchangeComboStandard函数是如何添加的?
    有没有在BEGIN_MESSAGE_MAP/END_MESSAGE_MAP之间注册该函数.
    即将消息与对应的消息响应函数关联起来
      

  17.   

    将你的cpp文件贴出来,帮你改~
      

  18.   

    属性设置问题, 不要自动排序, 那Sort属性不要打勾