MFC实现CTRL C、CTRL V等功能
1、重载虚函数PreTranslateMessage
对键盘消息进行处理
BOOL CProjectAttrFormView::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)//处理按键按下消息
{
if (GetKeyState(VK_CONTROL) & 0x80)//判断CTRL键是否是被按下的状态
{
SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam);//发出按键消息
}
}
return CFormView::PreTranslateMessage(pMsg);
}
2、响应按键按下消息
判断按下的键,发出对应的不同的系统消息,拷贝WM_COPY…
void CProjectAttrFormView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar)
{
case 'C':
if (GetFocus())
{
GetFocus()->SendMessage(WM_COPY, 0, 0);//发出拷贝消息
}
break;
case 'V':
if (GetFocus())
{
GetFocus()->SendMessage(WM_PASTE, 0, 0);
}
break;
default:
break;
}
CFormView::OnKeyDown(nChar, nRepCnt, nFlags);
}