Window捕获消息机制及动态创建button-MFC
PreTranslateMessage()函数捕获键盘按键消息
01. PreTranslateMessage函数,常用于屏蔽MFC对话框中默认的Enter和ESC消息
函数原型:BOOL PreTranslateMessage(MSG* pMsg)
用法举例:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN){
if(pMsg->wParam == VK_ESCAPE){
return TRUE;
}
if(pMsg->wParam == VK_RETURN){
return TRUE; // 对话框内部控件不可以接收到回车消息!!
}
}
return CDialog::PreTranslateMessage(pMsg);
}
02.响应系统按键
if(pMsg->message==WM_SYSKEYDOWN)
{
if(pMsg->wParam==VK_MENU)
MessageBox("alt");
}
if((pMsg->wParam==VK_F9) && (GetAsyncKeyState(VK_MENU)<0))
{
MessageBox(_T("同时按下了Alt键和F9键"));
}
GetAsyncKeyState()
=========================
功能:确定用户当前是否按下了键盘上的一个键
原型:SHORT GetAsyncKeyState(int vKey);
参数:nVirtKey指出要检查键的虚键代码。结果的高位指出该键当前是否被按下(是为1,否为0)。
常用键的VK值:
VK_SHIFT Shift键
VK_LSHIFT 左Shift键
VK_RSHIFT 右Shift键
VK_CONTROL Ctrl键
VK_LCONTROL 左Ctrl键
VK_RCONTROL 右Ctril键
VK_MENU Alt键
VK_LMENU 左Alt键
VK_RMENU 右Alt键
VK_LBUTTON 鼠标左键
VK_RBUTTON 鼠标右键
另一个函数GetKeyState与GetAsyncKeyState函数不同。GetAsyncKeyState在按下某键的同时调用,判断正在按下某键。
GetKeyState则在按过某键之后再调用,它返回最近的键盘消息从线程的队列中移出时的键盘状态,判断刚按过了某键。
与RegisterHotKey()相比,GetAsyncKeyState()的优点在于可以监控鼠标按键,缺点是需要使用定时器。
//*******************
用获取系统消息的方法
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN)
{
string controlName = GetControlName();
if (controlName == "Edit")
{
this.Show();
}
else
{
this.Hide();
}
}
base.WndProc(ref m);
}
Window捕获消息机制及动态创建button-MFC相关推荐
- Window捕获消息机制-C#
C#捕获鼠标消息 在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法.Application类的AddMessageFilter方法,Rem ...
- MFC中动态创建button及添加响应事件
MFC中动态创建button及添加响应的事件,主要步骤如下: 1.在头文件(**Dlg.h)中添加一个CButton类型, 例如:CButton btn; 2.在(**Dlg.cpp)的OnIn ...
- BB10动态创建Button并响应单击事件(C++版本)
现在在我的项目中需要用到这样一个功能:从数据文件中读取出数量不等的字符串,然后根据字符串的个数动态添加相应的按钮到主界面中,并且要求根据不同按钮的单击事件执行不同的代码. //不会使用CSDN的cod ...
- C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button
本文是<桌面编程入门>系列文章的开山之篇. <桌面编程入门>系列文章主要介绍桌面编程的各种组件,Button,ComboBox,Panel,WebBrowser...... 类 ...
- windows消息机制详解-3
1. 引言 Windows 在操作系统平台占有绝对统治地位,基于Windows 的编程和开发越来越广泛. Dos 是过程驱动的,而Windows 是事件驱动的[6],这种差别的存在使得很多Dos 程序 ...
- MFC六大核心机制之三:动态创建
MFC中很多地方都使用了动态创建技术.动态创建就是在程序运行时创建指定类的对象.例如MFC的单文档程序中,文档模板类的对象就动态创建了框架窗口对象.文档对象和视图对象.动态创建技术对于希望了解MFC底 ...
- 动态的Objective-C——关于消息机制与运行时的探讨
2019独角兽企业重金招聘Python工程师标准>>> 动态的Objective-C--关于消息机制与运行时的探讨 一.引言 Objective-C是一种很优美的语言,至少在我使用其 ...
- Handler消息机制(四):子线程可以创建Handler吗
默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handle都是在ui线程进行的.这种情况属于子线程给 ...
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...
MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文: http://blog.csdn.net/supermanking/article/detail ...
最新文章
- vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...
- MFCC特征参数提取(一)(基于MATLAB和Python实现)
- rosdep init和rosdep update出错处理
- linux应用程序抢占键盘,linux 系统挂起
- QT QNetworkInterface::allAddresses();获取了很多无效的地址_Qt编写地图综合应用16-省市轮廓图下载...
- 【Linux】一步一步学Linux——hexdump命令(267)
- ChemDraw教程:如何查看和删除俗名
- python中模块和包是什么_Python中模块和包的概念
- 常用Latex表达式符号——组合数学篇
- C/C++程序设计注意事项 (二)
- AtCoder Grand Contest 004 C - AND Grid(思路题)
- 《构建之法》读书心得
- xmlhttp资料(收集)
- 图神经网络学习笔记(1)——图信号与图傅里叶变换
- DevExpress 隐藏Ribbon中barbuttonItem的SuperTip(2)
- 浅谈一下前后端分离(什么是前后端分离以及前后端分离的原理)
- 淘宝新店提升必备-直通车如何开
- Bert入门学习过程记录
- 师兄写的一个JAVA播放器的源代码(转)
- Kali Linux 安装教程和使用技巧
热门文章
- ansible(自动化运维中)——ansible常用模块
- Linux解决 -bash: nc: command not found问题,安装nc
- iview 下拉select样式_Vue.js相关:iview实现select tree树形下拉框的示例代码
- sudo dpkg 找不到命令_【干货】Linux中实用但很小众的11个炫酷终端命令
- 怎么看电脑系统是win几_一文看懂arm架构和x86架构有什么区别
- 程序员算事业单位吗_清北毕业出来的程序员不如三本公务员?网友:你开心就好...
- iphonex黑屏开不了机_手机突然黑屏开不了机充电没反应怎么办?别急,这样就可以解决...
- 李焕英 照片动起来了?B站 up主用AI还原动态影像
- 突发!百度CEO李彦宏被当中泼了一瓶水,肇事者网名:直男上树
- assignment symbolic automaton verilog设计