求教:CListView中如何实现Ctrl+A全选?在线等 CListView中如何实现Ctrl+A全选列表里的所有记录? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 凑合着用用吧,呵呵: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);} 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);} 我的CListCtrl是动态添加到CListView里面的这一句GetDlgItem(IDC_LIST1)->m_hWnd如何替换? create的CListCtrl也有ID 就是create的最后一个参数值GetDlgItem(ID)->m_hWnd TO lixiaosan(小三) ;首先,谢谢你总是关注我的问题,:)解决了,因为我要在CListView里添加一个自定义的CListCtrl。而不是用CListView的GetListCtrl,所以在自定义的CListCtrl里添加PreTranslateMessage,而不需要判断if(pMsg->hwnd == GetDlgItem(IDC_LIST1)->m_hWnd)。to codewarrior(会思考的草) :CListCtrl的OnKeyDown参数好像不是(nTCHAR, nRepCnt, nFlags)还是谢谢问题已解决,谢谢! CRichEditCtrl控件怎么获取字符串中的回车换行? 如何在程序中获取本机(或局域网中)的SQL Server服务器名称呢? 望有SDK for Win98/95的兄弟能提供两个文件,不胜感激 一个送分问题,欢迎捧场! 一个困惑我的问题,请指点下。。。 WebBrowser控件导致软件不能打开 why???? 请教,小 case 我也要 同一个程序不同电脑中生成的exe——PE文件内容有很大不同 如何使得ATL生成的COM组件与MFC多文档进行双向通信? 线程间通信的一个问题? 请问如何用dll中定义的类?
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);
}
{
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);
}
这一句GetDlgItem(IDC_LIST1)->m_hWnd如何替换?
首先,谢谢你总是关注我的问题,:)解决了,因为我要在CListView里添加一个自定义的CListCtrl。而不是用CListView的GetListCtrl,所以在自定义的CListCtrl里添加PreTranslateMessage,而不需要判断if(pMsg->hwnd == GetDlgItem(IDC_LIST1)->m_hWnd)。to codewarrior(会思考的草) :CListCtrl的OnKeyDown参数好像不是(nTCHAR, nRepCnt, nFlags)
还是谢谢
问题已解决,谢谢!