键盘消息捕获--MFC

创建键盘接口:

  有一个简单的方法:在窗口过程中增加WM_KEYDOWN逻辑,类似于复制了所有的WM_VSCROLL 和 WM_HSCROLL逻辑。但是,不管什么时候我们想修改滚动条逻辑,就不得不在WM_KEYDOWN消息上做同样的改变。这样的做法是不明智的

  另一种更好的方法:把每一个WM_KEYDOWN消息转换为同等的WM_VSCROLL 或者 WM_HSCROLL消息。可以通过给窗口过程发送假的消息欺骗函数 WndProc函数,使她认为受到了滚动消息。

发送函数为SendMessage:

SendMessage(hwnd,message,wParam,lParam);

向他发送的窗口过程可以使同一个窗口过程,也可以使同一程序中其他窗口过程,或者甚至是另一个应用程序的窗口过程。

类似处理过程:

case WM_KEYDOWN:
    switch(wParam)
    {
        case VK_HOME:
            SendMessage(hwnd,WM_VSCROLL,SB_TOP,0);
            break;
        case VK_END:
            SendMessage(hwnd,WM_VSCROLL,SB_BOTTOM,0);
            break;
        case VK_PRIOR:
            SendMessage(hwnd,WM_VSCROLL,SB_PAGEUP,0);
            break;        
.....//以此类推

程序代码:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏令仔很忙

手把手教你----使用Nuget管理自己的项目库

官网上的解释:NuGet is the package manager for the Microsoft development platform in...

17510
来自专栏图形学与OpenGL

实验一 GDI生成像素点

1. 打开VC,新建MFC工程: 从开始->所有程序->Microsoft Visual C++ 6.0菜单中打开VC,也可单...

19810
来自专栏林德熙的博客

从以前的项目格式迁移到 VS2017 新项目格式 必须删除必须修改添加文件项目引用引用包删除多余文件输入注释多个框架使用条件判断迁移 WPF 项目

以前的项目格式使用的是 csproj 的格式,但是 .net core 支持使用 project.json 格式的项目文件,后来还是决定不使用这个格式。 VS2...

89620
来自专栏Flutter入门

Android adb无线调试脚本

使用adb的无线调试功能十分的方便。 但是实际工作中,总是要手动输入,十分麻烦。所以就把它写成脚本文件。

29220
来自专栏晓晨的专栏

ASP.NET Core 集成测试

16420
来自专栏欧阳大哥的轮子

Windows窗口消息和消息队列

所有基于事件驱动的操作系统中的GUI程序,都会在主线程中运行一个消息泵来从消息队列中取出消息并执行对应的处理逻辑。消息队列中的消息除了由系统产生外,还提供了对应...

33450
来自专栏大内老A

通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(3)

设置自定义的入口程序体现应用本身与应用托管之间的分离,它使我们可以创建独立于托管环境的应用,并根据需要寄宿于任何一个我们希望的宿主程序下,对于Web应用来说这一...

19070
来自专栏冷冷

Angrok 一个内网穿透服务

网上的搭建的教程挺多,尝试搭建的时候遇到了很多问题。 准备 # 升级yum yum update # 安装gcc yum install gcc 1、GO环境安...

20150
来自专栏葡萄城控件技术团队

WPF的消息机制(一)- 让应用程序动起来

前言 谈起“消息机制”这个词,我们都会想到Windows的消息机制,系统将键盘鼠标的行为包装成一个Windows Message,然后系统主动将这些Window...

20290
来自专栏Python

Python之Dijango的“坑” hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' cod

错误代码提示: hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'ut...

35690

扫码关注云+社区

领取腾讯云代金券