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保留上次单击的位置指教

解决方案 »

  1.   

    当问题是 :选中单击“选择”按钮后,再无其他操作,再次单击“选择”,怎么上次的内容还保留在str中?
    此时你的选择点还是停留在原有的选项上的也就是说,你选择以后,就算不做任何操作,但是鼠标上的选择是不会给你自动清除掉的,虽然pos和str是重新生成出来的,但是m_list.GetFirstSelectedItemPosition()取出来的位置还是你上次点击的地方!
      

  2.   

    噢噢,好像不管焦点的事,我在最后加了条GetDlgItem(IDC_Select)->SetFocus();
    呵呵,还是不行,恩,怎么去掉鼠标上次选择的位置
      

  3.   

    http://topic.csdn.net/t/20040512/15/3059093.html试试这里的办法
      

  4.   

    这个是因为listctrl默认是一直选中项, 你可以去掉。 调用下面语句后
    LONG lStyle;
    lStyle = GetWindowLong(GetListCtrl()->m_hWnd, GWL_STYLE);
    lStyle &= ~LVS_SHOWSELALWAYS ; //清除显示方式位
    SetWindowLong(GetListCtrl()->m_hWnd, GWL_STYLE, lStyle);