CListView中如何实现Ctrl+A全选列表里的所有记录?

解决方案 »

  1.   

    凑合着用用吧,呵呵:
    void CThumbnailListCtrl::OnKeyDown(UINT nTCHAR, UINT nRepCnt, UINT nFlags) 
    {
    switch(nTCHAR) 
    {
    case VK_DELETE:
    {
    HandleDelete(TRUE); //删除lvItem同时删除文件
    break;
    }
    case 'A': //Ctrl+A
    {
    if(nFlags & MK_CONTROL)
    {
    for(int i=0; i<GetItemCount(); ++i)
    {
    SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
    }
    }
    break;
    }
    default:
    break;
    }

    CListCtrl::OnKeyDown(nTCHAR, nRepCnt, nFlags);
    }
      

  2.   

    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {   
    if(pMsg->hwnd == GetDlgItem(IDC_LIST1)->m_hWnd)
    {
    switch( pMsg->wParam )
    {
    case 65:
      if(::GetKeyState(VK_CONTROL) < 0)
      {
    for(int i=0; i<m_list.GetItemCount(); i++)
    {
    m_list.SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED,
    LVIS_SELECTED|LVIS_FOCUSED);
    }
      }
      return TRUE;
    }
    }
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    我的CListCtrl是动态添加到CListView里面的
    这一句GetDlgItem(IDC_LIST1)->m_hWnd如何替换?
      

  4.   

    create的CListCtrl也有ID 就是create的最后一个参数值GetDlgItem(ID)->m_hWnd
      

  5.   

    TO  lixiaosan(小三) ;
    首先,谢谢你总是关注我的问题,:)解决了,因为我要在CListView里添加一个自定义的CListCtrl。而不是用CListView的GetListCtrl,所以在自定义的CListCtrl里添加PreTranslateMessage,而不需要判断if(pMsg->hwnd == GetDlgItem(IDC_LIST1)->m_hWnd)。to  codewarrior(会思考的草) :CListCtrl的OnKeyDown参数好像不是(nTCHAR, nRepCnt, nFlags)
    还是谢谢
    问题已解决,谢谢!