WTL对话框应用程序响应键盘消息

修改对话框程序的PreTranslateMessage()消息

 1 BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
 2 {
 3     int nCurSel;
 4     if((nCurSel = m_wndOutputList.GetCurSel()) >= 0)
 5     {
 6         //WCHAR strSource[256]={0};
 7         if(WM_KEYDOWN == pMsg->message)
 8         {
 9             switch (pMsg->wParam)
10             {
11             //屏蔽Esc消息
12             case VK_ESCAPE:
13                 return true;
14                 break;
15             //组合键Ctrl+C
16             case ‘C‘:
17             //case ‘c‘:
18                 if((::GetKeyState(VK_CONTROL) < 0))
19                 {
20                     m_wndOutputList.GetText(nCurSel,strSource);
21                 }
22                 //组合键Ctrl+Shift+S
23             case ‘S‘:
24                 if((::GetKeyState(VK_CONTROL) < 0) && (::GetKeyState(VK_SHIFT) < 0))
25                 {
26                 }
27
28                 break;
29             }
30         }
31     }
32     return CWindow::IsDialogMessage(pMsg);
33 }
时间: 2024-08-06 03:53:38

WTL对话框应用程序响应键盘消息的相关文章

VC++ 对话框程序响应键盘消息的处理方法的说明(非常重要)

基于MFC对话框的应用程序在响应按键消息和热键方面都力不从心,CDialog类的消息循环中去掉了TranslateAccelerator函数,因此不能响应热键:同时由于对话框上可能有很多控件,且默认情况下这些子窗口已经截获了焦点,因此键盘消息已经被控件捕获了:同时为了实现控件焦点切换和对话框默认行为,  VK_TAB.VK_LEFT.VK_RIGHT.VK_UP.VK_DOWN. VK_RETURN.VK_ESCAPE 等键已经被截获处理,因此对话框没有控件时仍然不能完全响应按键消息. 关于热键

鼠标键盘消息响应及系统热键注册

① 鼠标消息: WM_MOUSEMOVE     鼠标移动位置WM_LBUTTONDOWN       鼠标左键按下WM_LBUTTONUP     鼠标左键弹起WM_LBUTTONDBLCLK                    鼠标左键双击WM_RBUTTONDOWN                      鼠标右键按下WM_RBUTTONUP          鼠标右键弹起WM_RBUTTONDBLCLK   鼠标右键双击WM_MBUTTONDOWN       鼠标中键按下WM_MB

[原]MFC中DIALOG(对话框)程序响应加速键(快捷键)

[原]MFC中DIALOG(对话框)程序响应加速键(快捷键) 2014-8-6阅读266 评论0 新建一个对话框程序,项目名为Test,删除默认确定,取消和静态文本框控件.添加一个按钮,Caption修改为“打开”,ID为IDC_Open,双击该按钮添加响应函数,响应函数如下: void CTestDlg::OnBnClickedOpen() { MessageBox("打开 被按下"); } 即程序运行之后点击“打开”则弹出一个对话框. 下面为这个按钮添加快捷键ctrl+o.左下角切

鼠标消息与键盘消息

在Microsoft Windows 中,键盘和鼠标是两个标准的用户输入源,在一些交叠的操作中通常相互补充使用.当然,鼠标在今天的应用程序中比10年前使用得更为广泛.甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏.画图程序.音乐程序,以及Web创览器等程序中就是这样.然而,我们可以不使用鼠标,但绝对不能从一般的PC中拆掉键盘. 相对于个人计算机的其他组件,键盘有非常久远的历史,它起源于1874年的第一台Remington打字机.早期的计算机程序员用键盘在 Hollerith卡片上打孔,以

MFC 对话框Dialog响应键盘事件

OnKeyDown不行 Dialog程序本来没有直接响应键盘的事件,如果你用OnKeyDown会发现不起作用. 那么你想按下"左键"."W键"."9键盘"应该怎么响应呢? 重载基类的BOOL PreTranslateMessage(MSG* pMsg)函数 最简单的键盘响应函数 头文件声明: BOOL PreTranslateMessage(MSG* pMsg); 源文件定义: BOOL CmfcDlg::PreTranslateMessage(

Hook 简单的实例--拦截鼠标和键盘消息(一)

Hook(钩子)就是对Windows系统的一些消息或是API函数进行拦截和监控的处理平台,让可以根据程序员的设置获取其感兴趣的信息. 这里主要是介绍一下Hook拦截鼠标消息和键盘消息. 下面是CALLBACK Proc 回调函数 和 CallNextHookEx函数 LRESULT CALLBACK HookProc ( int nCode, //指定是否需要处理该消息 WPARAM wParam, LPARAM lParam //包含该消息的附加消息 , ); 这个回调函数的名字可以随你取,但

MFC应用程序中处理消息的顺序

应用程序处理消息的过程: 1.AfxWndProc()        该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc()  该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc()       该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg()         该

第6章 键盘_6.3-6.4 字符消息、键盘消息和字符集

6.3 字符消息 while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg);//Windows将根据击键消息.转义状态和键盘的国家/地区配置等信息,将扫描码转换成相应的字符码,如果可以组合成一个字符,则把字符消息放入应用程序的消息队列,产生WM_CHAR.WM_DEADCHAR等消息. DispatchMessage(&msg); } 6.3.1 四类字符消息(WM_CHAR\WM_DEADCHAR.WM_SYSCHAR\W

TControl的消息覆盖函数大全(15个WM_函数和17个CM_函数,它的WndProc就处理鼠标与键盘消息)

注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中): TControl = class(TComponent) private // 15个私有消息处理,大多是鼠标消息.注意,消息函数大多只是一个中介,且TWinControl并不重写. procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; procedure WMLButtonDown(var Messa