转自:http://www.cnblogs.com/time-is-life/p/8282357.html
自定义了一个控件
class CHtmlEditCtrlEx : public CHtmlEditCtrl
想在这个控件接收到Ctrl+V键盘消息的时候,向该控件所在的窗口发送一个自定义消息。具体实现方法如下:
在该控件的PreTranslateMessage方法中定义自定义消息,然后将该消息发送给父窗口
BOOL CHtmlEditCtrlEx::PreTranslateMessage(MSG* pMsg)
{
int WM_HENRYPASTE = RegisterWindowMessage(TEXT("HENRYPASTE"));
int aa = 0;
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case 'V':
if( ::GetKeyState(VK_CONTROL) & 0x8000 )
{
GetParent()->SendMessage(WM_HENRYPASTE, pMsg->wParam, pMsg->lParam);
}
break;
}
}
return CHtmlEditCtrl::PreTranslateMessage(pMsg);
}
在控件所在窗口的.h文件中定义消息处理函数。
在控件所在的窗口类的.cpp文件中,在文件的头部定义这个消息。
在消息映射中映射这个消息。
然后实现这个消息处理函数:
LRESULT CDialog2::OnHenryPaste(WPARAM wParam, LPARAM lParam)
{
// do something useful
int MyReturnValue = 0;
return (LRESULT) MyReturnValue;
};
这样当自定义控件接收到CTRL+V的键盘消息时,父窗口的处理函数就能被执行了。