大侠们帮我看一下下面这段代码:
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
序号 成绩 学分 标准我不知道为什么“序号 成绩 学分 标准”会在里表的最后一行,而且输出的数据几乎是一堆乱码请大虾们指点下这两个问题,不胜感激!
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
序号 成绩 学分 标准我不知道为什么“序号 成绩 学分 标准”会在里表的最后一行,而且输出的数据几乎是一堆乱码请大虾们指点下这两个问题,不胜感激!
正解。去掉LISTBOX默认的LBS_SORT窗口风格。
==================================
CComboBox里面是空的吗?在OnInitDialog()里面添加,看看是不是都加上了。第二个问题是你允许它排序了,禁止它排序。
listbox不怎么适合多列数据的...............
列表listBox 的自动排序功能去掉
DWORD dwstyle = GetWindowLong(m_ListScore.m_hWnd,GWL_STYLE);
dwstyle &= ~CBS_SORT;
SetWindowLong(m_ListScore.m_hWnd,GWL_STYLE,dwstyle);
然后把AddString改成InsertString,第一个参数设为-1,即每次都添加到最后。
至于中文的乱码,可能是由于Unicode,若用Unicode字符集,显示中文要用WideCharToMultiByte转为多字节。
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));
}
大虾给解答下
另外ChangeType函数里面都做了什么工作?
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函数
还有,我的那个OnSelchangeComboStandard() 添加的控件函数,不是在点击控件时候就会调用么?
有没有在BEGIN_MESSAGE_MAP/END_MESSAGE_MAP之间注册该函数.
即将消息与对应的消息响应函数关联起来