void CMyDlg::OnSelect()
{
// TODO: Add your control notification handler code here
CString str="";
POSITION pos=m_list.GetFirstSelectedItemPosition();
//int nItem = m_list.GetNextSelectedItem(pos);
if(pos!=NULL)
{
while(NULL != pos )
{
int nItem = m_list.GetNextSelectedItem(pos);
str += m_list.GetItemText(nItem,0) ;//取姓名
str += "\t";
str += m_list.GetItemText(nItem,1) ;//取性别
str += "\t";
str += m_list.GetItemText(nItem,2) ;//取学号
str += "\t";
str += m_list.GetItemText(nItem,3) ;//取成绩
}
AfxMessageBox(str);
}
else AfxMessageBox("请选择一个选项"); }
其实我问道问题挺简单,单击“选择”,没选中就弹出AfxMessageBox("请选择一个选项");选中一个(仅单选),再点击“选择”就弹出AfxMessageBox(str);当问题是 :选中单击“选择”按钮后,再无其他操作,再次单击“选择”,怎么上次的内容还保留在str中?str的作用域每次单击都会函数结束了,还是那个pos保留上次单击的位置指教
{
// TODO: Add your control notification handler code here
CString str="";
POSITION pos=m_list.GetFirstSelectedItemPosition();
//int nItem = m_list.GetNextSelectedItem(pos);
if(pos!=NULL)
{
while(NULL != pos )
{
int nItem = m_list.GetNextSelectedItem(pos);
str += m_list.GetItemText(nItem,0) ;//取姓名
str += "\t";
str += m_list.GetItemText(nItem,1) ;//取性别
str += "\t";
str += m_list.GetItemText(nItem,2) ;//取学号
str += "\t";
str += m_list.GetItemText(nItem,3) ;//取成绩
}
AfxMessageBox(str);
}
else AfxMessageBox("请选择一个选项"); }
其实我问道问题挺简单,单击“选择”,没选中就弹出AfxMessageBox("请选择一个选项");选中一个(仅单选),再点击“选择”就弹出AfxMessageBox(str);当问题是 :选中单击“选择”按钮后,再无其他操作,再次单击“选择”,怎么上次的内容还保留在str中?str的作用域每次单击都会函数结束了,还是那个pos保留上次单击的位置指教
此时你的选择点还是停留在原有的选项上的也就是说,你选择以后,就算不做任何操作,但是鼠标上的选择是不会给你自动清除掉的,虽然pos和str是重新生成出来的,但是m_list.GetFirstSelectedItemPosition()取出来的位置还是你上次点击的地方!
呵呵,还是不行,恩,怎么去掉鼠标上次选择的位置
LONG lStyle;
lStyle = GetWindowLong(GetListCtrl()->m_hWnd, GWL_STYLE);
lStyle &= ~LVS_SHOWSELALWAYS ; //清除显示方式位
SetWindowLong(GetListCtrl()->m_hWnd, GWL_STYLE, lStyle);