我在listctrl的onkeydown()函数中,想区分shift+delete键和delete键,当按shift+delete键时直接删除,按delete键删除到回收站,但是按shift+delete键时,在onkeydown(UINT nChar, UINT nRepCnt, UINT nFlags)函数中nchar一直为shift值;只有单独按delete键时,nchar才为VK_DELETE,请问该如何处理??
void CPbListCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// GetKeyState(nChar);
switch (nChar)
{
case VK_DELETE:
OnPbDelete();
break;
case VK_SHIFT:
break; }
CRegListCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CPbListCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// GetKeyState(nChar);
switch (nChar)
{
case VK_DELETE:
OnPbDelete();
break;
case VK_SHIFT:
break; }
CRegListCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
}
{
// GetKeyState(nChar);
switch (nChar)
{
case VK_DELETE:
if (::GetKeyState(VK_SHIFT) < 0)
OnShiftDelete();
else
OnPbDelete();
break;
}
CRegListCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
}
只要按shift+delete键,nChar的值一直为shift,根本不能进入case VK_DELETE:中,该如何处理??
仔细看我的程序,是不处理case VK_SHIFT!即使先按shift键产生了WM_KEYDOWN又如何?
只要处理 VK_DELETE,然后再判断shift是否被按下!!!