对话框不响应WM_KEYDOWN消息,可以通过重载BOOL PreTranslateMessage(MSG * pMsg)来实现

 

  对话框程序中,如果不响应WM_KEYDOWN消息,可以通过重载PreTranslateMessage(MSG* pMsg)来实现 

  如下例:

 

BOOL CShowImageDlg::PreTranslateMessage(MSG* pMsg)
{
	if(pMsg->message==WM_KEYDOWN){

		switch(pMsg->wParam)
		{
		case VK_LEFT:
			SendMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
			return TRUE;  // 不使用默认的方向键调用方式      如果不加return ture  按左方向键时 光标会移动左面的控件上
		case VK_RIGHT:
			SendMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
			return TRUE;

		case VK_DOWN:
			SendMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
			return TRUE;

		case VK_UP:
			SendMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
			return TRUE;
		}
	}

	else if (pMsg->message==WM_KEYUP)
	{
		if(pMsg->wParam==VK_LEFT)
			SendMessage(WM_KEYUP,pMsg->wParam,pMsg->lParam);
	}
	return CDialog::PreTranslateMessage(pMsg);
}



你可能感兴趣的:(UP)