RegisterHotKey注册热键,然后响应WM_HOTKEY消息
MSDN中的一个示例代码,步骤就是RegisterHotKey注册热键,然后响应WM_HOTKEY消息
@1:这个是系统热键
- #include "stdafx.h"
- int _cdecl _tmain (
- int argc,
- TCHAR *argv[])
- {
- if (RegisterHotKey(
- NULL,
- 1,
- MOD_ALT | MOD_NOREPEAT,
- 0x42)) //0x42 is 'b'
- {
- _tprintf(_T("Hotkey 'ALT+b' registered, using MOD_NOREPEAT flag\n"));
- }
- MSG msg = {0};
- while (GetMessage(&msg, NULL, 0, 0) != 0)
- {
- if (msg.message == WM_HOTKEY)
- {
- _tprintf(_T("WM_HOTKEY received\n"));
- }
- }
- return 0;
- }
@2:软件非全局的快捷键,Keyboard Accelerators(键盘加速器)
- FontAccel ACCELERATORS
- {
- VK_F5, IDM_REGULAR, VIRTKEY
- "B", IDM_BOLD, CONTROL, VIRTKEY
- "I", IDM_ITALIC, CONTROL, VIRTKEY
- "U", IDM_ULINE, CONTROL, VIRTKEY
- }
- HWND hwndMain; // handle to main window
- HANDLE hinstAcc; // handle to application instance
- int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)
- {
- MSG msg; // application messages
- BOOL bRet; // for return value of GetMessage
- HACCEL haccel; // handle to accelerator table
- // Perform the initialization procedure.
- // Create a main window for this application instance.
- hwndMain = CreateWindowEx(0L, "MainWindowClass",
- "Sample Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
- hinst, NULL );
- // If a window cannot be created, return "failure."
- if (!hwndMain)
- return FALSE;
- // Make the window visible and update its client area.
- ShowWindow(hwndMain, nCmdShow);
- UpdateWindow(hwndMain);
- // Load the accelerator table.
- // haccel = LoadAccelerators(hinstAcc, MAKEINTRESOURCE(IDC_*)) ;IDC_*为.RC资源中的加速器ID
- haccel = LoadAccelerators(hinstAcc, "FontAccel");
- if (haccel == NULL)
- HandleAccelErr(ERR_LOADING); // application defined
- // Get and dispatch messages until a WM_QUIT message is
- // received.
- while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
- {
- if (bRet == -1)
- {
- // handle the error and possibly exit
- }
- else
- {
- // Check for accelerator keystrokes.
- if (!TranslateAccelerator(
- hwndMain, // handle to receiving window
- haccel, // handle to active accelerator table
- &msg)) // message data
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- }
- return msg.wParam;
- }
- LRESULT APIENTRY MainWndProc(HWND hwndMain, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- BYTE fbFontAttrib; // array of font-attribute flags
- static HMENU hmenu; // handle to main menu
- switch (uMsg)
- {
- case WM_CREATE:
- // Add a check mark to the Regular menu item to
- // indicate that it is the default.
- hmenu = GetMenu(hwndMain);
- CheckMenuItem(hmenu, IDM_REGULAR, MF_BYCOMMAND |
- MF_CHECKED);
- return 0;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- // Process the accelerator and menu commands.
- case IDM_REGULAR:
- case IDM_BOLD:
- case IDM_ITALIC:
- case IDM_ULINE:
- // GetFontAttributes is an application-defined
- // function that sets the menu-item check marks
- // and returns the user-selected font attributes.
- fbFontAttrib = GetFontAttributes(
- (BYTE) LOWORD(wParam), hmenu);
- // SetFontAttributes is an application-defined
- // function that creates a font with the
- // user-specified attributes the font with
- // the main window's device context.
- SetFontAttributes(fbFontAttrib);
- break;
- default:
- break;
- }
- break;
- // Process other messages.
- default:
- return DefWindowProc(hwndMain, uMsg, wParam, lParam);
- }
- return NULL;
- }
http://blog.csdn.net/x356982611/article/details/16341797
RegisterHotKey注册热键,然后响应WM_HOTKEY消息的更多相关文章
- 用RegisterHotKey注册系统热键
函数功能:该函数定义一个系统范围的热键. 函数原型:BOOL RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk): 参数: hWnd:接 ...
- WPF注册热键后处理热键消息(非winform方式)
由于最近在做wpf版的截图软件,在处理全局热键的时候,发现国内博客使用的都是winform窗体的键盘处理方式,此方式需要使用winform的动态库,如此不协调的代码让我开始在github中寻找相关代码 ...
- RegisterHotKey注册快捷键
RegisterHotKey的具体使用方使用方法如下: BOOL RegisterHotKey( HWND hWnd, //响应该热键的窗口句柄 Int id, ...
- WinForm和WPF中注册热键
由于.Net没有提供专门的类库处理热键,所以需要直接调用windows API来解决. HotKey为.NET调用Windows API的封装代码,主要是RegisterHotKey和Unregist ...
- MFC注册热键
注册热键. 当用户点击注册的快捷键时,做出相应的响应. 定义 ALT+M键为测量按钮响应函数: 头文件中定义: #define ID_HOTKEY1 10001 在初始化函数中加入注册热键函数: if ...
- 离奇失踪的WM_HOTKEY消息--浅析WIN32消息队列
故事的开端有些平淡,眼红于XXX小程序,认为写完该程序就有了和心仪的妹子多相处的机会,必须搞,必须酷,按钮不能有,界面得隐藏,这就想到了全局快捷键. 注册调用RegisterHotKey(m_hWnd ...
- MFC 给对话框注册热键
在头文件中添加: //}}AFX_MSGafx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//(此行为加入的)BEGIN_MESSAGE_MA ...
- delphi注册热键方法(一)
uses windows,menus; ..... //声明 HotKey_Key: Word; HotKey_Shift: Word; procedure WMHotKey(var msg : Tm ...
- 【WinForm程序】注册热键快捷键切换
重写DefWndProc事件 #region Window 消息捕获 const int WM_COPYDATA = 0x004A; public struct COPYDATASTRUCT { pu ...
随机推荐
- [置顶] 让金融互联网-P2P网贷融资量增长10倍的广告宣传公益活动
我想做一件什么事?一个公益活动,所有资料都会共享出来--- 再次声明:这是一次公益,所有资料会公开. 我正在做一点事:收集各个P2P信贷公司(包括线上线下的),然后给线上P2P信贷公司做营销策略,教他 ...
- Linux 软件源设置
版本号:1.0.0-beta 作者:石硕 更新:2014-04-30 15:51:40 ======================================================== ...
- SQL 根据时间和打印状态抽取记录
1.首先要是没有打印的记录. 2.其次是要按照时间,时间是要按照倒序排列. 下载文件的URL and order by 上传时间 desc *是否打印,使用字段bit,0是没有打印,1是已经打印
- jqGrid笔记@简单实现
jqGrid在MVC中的版本是已经通过 HtmlHelper 的扩展方法封装后的产物,webForm版本貌似也将其封装成了服务器端空间,所以我推荐下载原生的jqGrid版本的地址为:http://ww ...
- Java7新特性(一)Coin
1.语法糖 数字下划线 2.switch语句中的String 3.multicatch 4.final重抛 对比上份代码 5.try-with-resources(TWR) AutoC ...
- 推荐五个最好的MySQL GUI工具
推荐五个最好的MySQL GUI工具 在本文中,我们会介绍一些最常用的MySQL GUI工具并附上下载链接.希望大家能更好的运用这些工具. AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP ...
- openfire数据库中文乱码问题
1.首先数据库的编码设置为UTF-8 2.项目的编码也要设置为UTF-8 假设数据保存到数据库的时候还有乱码 就要改动openfire配置文件 在openfire主文件夹\conf\openfire ...
- Swift - 初始化方法返回nil表示初始化失败
自Swift1.1开始,初始化init方法便有返回nil的能力.我们可以在init声明的时候在其后面加上一个 ? 或者 ! 来表示初始化失败时可能返回nil. 比如,给Int类添加一个将字符串初始化成 ...
- CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学
2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...
- C# webBrowser操作 javascript
using System; using System.Windows.Forms; namespace Demo { public partial class Form1 : Form { publi ...