vc编程常见的小技巧

源代码在线查看: 对话框中响应键盘按键 .txt

软件大小: 28 K
上传用户: smellteen
关键词: 编程
下载地址: 免注册下载 普通下载 VIP

相关代码

				 
				如何在对话框中响应键盘按键  
				 
				作者:ghj1976 时间:2001-10-04 09:56 出处:互联网 责编:jizhuwo  
				 
				              摘要:如何在对话框中响应键盘按键 
				 
				 
				我们首先想到的是响应WM_KEYDOWN消息,但实际运行却发现没有任何效果。
				原因是对话框里的控件需要首先对按键作出响应,比如多行编辑框必须首先
				处理回车,不至于回车使对话框关闭。
				我们要想在第一时间对对话框的按键做出响应,需要重载PreTranslateMessage,
				以下的代码实现了在对话框中显示虚拟键值(virtual-key code)
				BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
				{ 
				if(pMsg->message == WM_KEYDOWN) 
				{ 
				///或者直接调用OnKeyDown 
				CString strwParam; 
				strwParam.Format("%d ",pMsg->wParam); 
				CDC* pDC = GetDC(); 
				pDC->TextOut(10,10,strwParam); 
				ReleaseDC(pDC); 
				} 
				return CDialog::PreTranslateMessage(pMsg); 
				}
				
				此方法也适用于FORMVIEW或其它控件中对键盘按键的响应,以下的代码来自MSDN,
				实现了当按下上下左右方向键时调用OnKeyDown,我们可以在OnKeyDown中作相应处理。 
				
				BOOL CSampleControl::PreTranslateMessage(LPMSG lpmsg) 
				{
				BOOL bHandleNow = FALSE;
				switch (lpmsg->message)
				{
				case WM_KEYDOWN:
				switch (lpmsg->wParam)
				{
				case VK_UP:
				case VK_DOWN:
				case VK_LEFT:
				case VK_RIGHT:
				bHandleNow = TRUE;
				break;
				} 
				if (bHandleNow) 
				OnKeyDown(lpmsg->wParam, LOWORD(lpmsg ->lParam), HIWORD(lpmsg->lParam)); 
				break; 
				} 
				return bHandleNow; 
				} 			

相关资源