热键和捕获系统菜单消息

热键和捕获系统菜单消息

作者:wuhran
日期:2006-12-19

注册热键,函数原型:
BOOL RegisterHotKey(
  HWND hWnd,         // 接收hotkey窗口
  int id,            // hotkey的id 范围是0x0000到0xBFFF
  UINT fsModifiers,  // 可以是MOD_ALT MOD_CTRL MOD_WIN
  UINT vk            // 虚拟键值
);

本文适合初学者

前言:
本人喜欢把winamp设置在托盘区,不过winamp不提供热键呼出,而我用惯OICQ的热键呼出,所以,每次想换歌时要用鼠标点击总觉得不爽。
于是萌发了给它作个热键的想法,基本思想就是注册一个系统级热键当然热键不能直接注册在winamp上的,所以我把热键注册在一个对话框上,然后通过获得的winamp的句柄将winamp显示出来,并且是显示到最前方。而且对话框最小化时对它进行隐藏,这样不至于占用任务栏,也让人觉得热键就是winamp自己带的,对话框也同样用热键呼出。

下载源代码 大小:11K

 
示例程序运行效果图

具体步骤:
首先创建一个对话框工程,添加edit控件,便于用户自己添加喜欢的热键,示例程序中默认的是"ctrl+某个键".
m_Wap是winamp的热键
m_Dlg是dialog的热键
利用::RegisterHotKey进行注册

BOOL RegisterHotKey(
  HWND hWnd,         // 接收hotkey窗口
  int id,            // hotkey的id 范围是0x0000到0xBFFF
  UINT fsModifiers,  // 可以是MOD_ALT MOD_CTRL MOD_WIN
  UINT vk            // 虚拟键值,就是m_Wap,m_Dlg的值
);

#ifndef ID_MYHOTKEY
#define ID_MYHOTKEY 0x5554
#endif

在PreTranslateMessage中响应
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_HOTKEY && pMsg->wParam == ID_MYHOTKEY)
 {  
 
 }

 return CDialog::PreTranslateMessage(pMsg);
}
 
捕捉窗口最小化消息
重载WindowProc
LRESULT CXXXDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    if(message == WM_SYSCOMMAND && wParam == SC_MINIMIZE)
    {
        this->ShowWindow(SW_HIDE);
        return 0;
    }

    return CDialog::WindowProc(message, wParam, lParam);
   
}

 

本文来自CSDN博客,转载请标明出处http://blog.csdn.net/wuhuiran/archive/2006/12/19/1448714.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值