如何按Delete键删除CListBox的内容,删除多条呢?

解决方案 »

  1.   

    在Classwizard没找到,可以说明步骤吗?谢谢
      

  2.   

    重载PreTranslateMessage
    截获WM_KEYDOW 
    当wparam为VK_DELETE及当前的焦点在CListBox上时
    do itps:CListBox::GetCurSel//single selected
    CListBox::DeleteString 
    //多行,aryListBoxSel的值就是索引号
    int nCount = pmyListBox->GetSelCount();
    CArray<int,int> aryListBoxSel;aryListBoxSel.SetSize(nCount);
    pmyListBox->GetSelItems(nCount, aryListBoxSel.GetData());
      

  3.   

    CListBox::GetCurSel() 看他的返回值就可以判断出焦点是否在该控件上了!
      

  4.   

    我的窗口上有十几个listbox,怎样知道焦点是Clistbox呢?谢谢
      

  5.   

    GetFocus() ==GetDlgItem(IDC_LISTBOX1)
    安全一点的是::GetFocus() ==GetDlgItem(IDC_LISTBOX1)->GetSafeWnd()
      

  6.   

    我觉得这样不是蛮好,每一个listbox控件都要写一行,岂不麻烦。
    有更好的吗?
      

  7.   

    这个好解决,在以上人员答案进行综合!响应你CListbox 控件所在的form
    PreTranslateMessage
    取控件handle
    然后switch ID
        case  listbox1-ID:
        case  listbox2-ID:
         case  listbox3--ID:
         -
         -
        {
         --
         --
         --
         } 
      
    提示一点,自己在思考看,这样水平提高会很快:)
      

  8.   

    void CNeedForCheckingDlg::OnButton6() // Delete FIles
    {
    // TODO: Add your control notification handler code here
    int sel_count = flb->GetSelCount();// flb是CListBox类
    int count[100];
    flb->GetSelItems( sel_count, count );
    for( int i = 0; i < sel_count; i++ ) {
    flb->DeleteString( count[i] - i ); 
    }
    }