修改Windows Mobile默认按键消息

简介:

本文讲述了如何利用SHCMBM_OVERRIDEKEY来修改Windows Mobile默认按键消息的方法。

 

问题来源:

如何屏蔽talk (打电话的那个键)

 

问题描述:

在《利用HardwareButton操作Windows Mobile的硬件按钮》一文中,讲述了在.NET CF中,如何利用HardwareButton重写 Pocket PC 硬件按钮的功能。但是在某些情况下,用户希望对应的硬件按钮只为其应用程序服务,而不实施该硬件按钮的默认功能(如Talk按键)。

 

解决方法:

向窗口发送SHCMBM_OVERRIDEKEY消息,在WM_HOTKEY中进行处理。

 

具体实施例:

参考SDK自带的Sample,位于“Windows Mobile 6 SDK\Samples\Common\CPP\Win32\FullScreen”目录。该例子演示了如何在Windows Mobile上隐藏taskbarsoftkey,进行全屏显示。其中,退出全屏的功能,采用softkey按钮来实现。而具体的方式,就是向窗口发送SHCMBM_OVERRIDEKEY消息,在WM_HOTKEY中,加入用户自己的应用。以该工程为例,我们进行修改,加入“按Talk按键退出全屏”这个功能,而不弹出拨号界面。

 

1. SetSoftkeyBarForFullScreen函数中,加入消息发送函数:

    // Override/Undo softkeys for key press notifications, so we can

    // display taskbar & softkeys on SK1/SK2 press in full screen.

    DWORD dwBits;

    dwBits = bFullScreen

                ? SHMBOF_NODEFAULT | SHMBOF_NOTIFY

                : 0;

    SendMessage(hwndSoftKeyBar,

                SHCMBM_OVERRIDEKEY,

                VK_TSOFT1,

                MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

    SendMessage(hwndSoftKeyBar,

                SHCMBM_OVERRIDEKEY,

                VK_TSOFT2,

                MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

     //加入的消息发送函数

     SendMessage(hwndSoftKeyBar,

                SHCMBM_OVERRIDEKEY,

                VK_TTALK,

                MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

 

2. CALLBACK DialogProc(…)函数的WM_HOTKEY中,加入VK_TTALK键的处理:

   case VK_TTALK:

        {

             // if we are in full screen mode we want to exit

             // when the user presses a softkey.

             if (g_bFullScreen)

             {   

                  SendMessage(GetDlgItem(hWnd,IDC_EDIT), WM_SETTEXT, 0, (LPARAM)L"[TALKkey] Exiting Full Screen");

                  FullScreen(hWnd, FALSE);

              }

          }

   break;

 

运行结果截屏

 

参考链接:

WM_HOTKEYhttp://msdn.microsoft.com/en-us/library/aa453868.aspx

SHCMBM_OVERRIDEKEYhttp://msdn.microsoft.com/en-us/library/aa454997.aspx

 


本文转自施炯博客园博客,原文链接:http://www.cnblogs.com/dearsj001/archive/2010/03/12/ModifyWMKey.html,如需转载请自行联系原作者

相关文章
EMQ
|
缓存 数据可视化 物联网
在 Windows 上搭建 MQTT 消息服务器
本文将以NanoMQ为例,演示如何通过安装包和源代码编译两种安装方式,在Windows系统中快速搭建一个可以支持多协议连接的物联网MQTT消息服务器。
EMQ
620 0
|
4月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
Windows
windows下未知原因导致按键全部变成了快捷键(按D返回桌面)解决办法
windows下未知原因导致按键全部变成了快捷键(按D返回桌面)解决办法
871 0
|
SQL 前端开发 Windows
SQL Sever2012安装错误——Windows Installer错误消息:打开安装日志文件的错误的原因及解决方案
由于要对着错误信息来解决,所以此处是用手机拍摄的,如果看不清楚可以看下面的文字版;此处的错误是在安装程序支持规则中爆出的
652 0
SQL Sever2012安装错误——Windows Installer错误消息:打开安装日志文件的错误的原因及解决方案
|
关系型数据库 MySQL 数据库
mysql:Windows修改MySQL数据库密码(修改或忘记密码)
mysql:Windows修改MySQL数据库密码(修改或忘记密码)
1030 0
mysql:Windows修改MySQL数据库密码(修改或忘记密码)
|
关系型数据库 MySQL 数据库
Windows下MySQL修改Data存放路径
Windows下MySQL修改Data存放路径
376 0
Windows下MySQL修改Data存放路径
|
JSON JavaScript 安全
基于Windows微信实现实时收发微信消息App
基于Windows微信实现实时收发微信消息App
1439 0
|
数据安全/隐私保护 Windows
Windows修改C盘下的用户(Users)文件夹下的汉字文件夹
Windows修改C盘下的用户(Users)文件夹下的汉字文件夹
690 1
Windows修改C盘下的用户(Users)文件夹下的汉字文件夹
|
弹性计算 Linux Windows
阿里云服务器操作系统可以修改吗?Windows和Linux系统互换限制说明
阿里云服务器操作系统选择后还可以更改吗?可以的,重装操作系统是免费的,但是需要注意中国大陆地域可以随意更换,中国香港、新加坡等非中国大陆地域的云服务器不支持Windows和Linux操作系统之间变换
2038 0
阿里云服务器操作系统可以修改吗?Windows和Linux系统互换限制说明
|
存储 监控 算法
微信Windows端IM消息数据库的优化实践:查询慢、体积大、文件损坏等
本文分享的是,微信客户端团队基于对微信用户日常使用场景和数据分析,通过分离重要和非重要数据、采用可靠的分库策略等,对微信Windows端IM本地数据库的架构进行的优化和改造,并最终得到一个具备良好实践效果的技术改造方案。
416 0
微信Windows端IM消息数据库的优化实践:查询慢、体积大、文件损坏等