c++ builder 如何为application 增加热键(快捷键)
来源:互联网 发布:中级数据库工程师真题 编辑:程序博客网 时间:2024/06/05 16:53
ResiterHotKey的用法和消息处理的用法
这个程序有一个窗体Form1,Form1上注册了一个热键Ctrl+F11,以后只要这个程序在运行,不管在什么,你一按Ctrl+F11, 就会弹出一个消息框。
//Unit.H
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
//这个函数就是消息处理函数,通过VCL_MESSAGE_HANDLER宏和指定消息相连
void __fastcall WMHotKey(TMessage &Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
//以下三句就是消息处理,可以在BEGIN和END之间加入多个HANDLER
BEGIN_MESSAGE_MAP
//处理WM_HOTKEY消息,注册热键之后,按下热键就会向指定窗口发出该消息
VCL_MESSAGE_HANDLER(WM_HOTKEY, TMessage, WMHotKey);
END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//Unit1.CPP
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//这就是消息处理函数的实现
void __fastcall TForm1::WMHotKey(TMessage &Msg)
{
SetForegroundWindow(Handle);
ShowMessage("Hot Key Registered!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle, HOTKEY_SMS, MOD_CONTROL, VK_F11);
//以上那句注册热键,Handle是窗口句柄,0x1000是一个ID号,设置该热键在线程中
//的唯一值,第三个参数表示要按下那些系统键,最后一个是按键的虚拟键码
//具体可参见MSDN帮助
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Handle,HOTKEY_SMS);
//注销热键,0x1000和上面对应,指明注销哪个热键
}
//---------------------------------------------------------------------------
这个程序有一个窗体Form1,Form1上注册了一个热键Ctrl+F11,以后只要这个程序在运行,不管在什么,你一按Ctrl+F11, 就会弹出一个消息框。
//Unit.H
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
//这个函数就是消息处理函数,通过VCL_MESSAGE_HANDLER宏和指定消息相连
void __fastcall WMHotKey(TMessage &Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
//以下三句就是消息处理,可以在BEGIN和END之间加入多个HANDLER
BEGIN_MESSAGE_MAP
//处理WM_HOTKEY消息,注册热键之后,按下热键就会向指定窗口发出该消息
VCL_MESSAGE_HANDLER(WM_HOTKEY, TMessage, WMHotKey);
END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//Unit1.CPP
//---------------------------------------------------------------------------
#define HOTKEY_SMS 0x1000
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//这就是消息处理函数的实现
void __fastcall TForm1::WMHotKey(TMessage &Msg)
{
SetForegroundWindow(Handle);
ShowMessage("Hot Key Registered!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle, HOTKEY_SMS, MOD_CONTROL, VK_F11);
//以上那句注册热键,Handle是窗口句柄,0x1000是一个ID号,设置该热键在线程中
//的唯一值,第三个参数表示要按下那些系统键,最后一个是按键的虚拟键码
//具体可参见MSDN帮助
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Handle,HOTKEY_SMS);
//注销热键,0x1000和上面对应,指明注销哪个热键
}
//---------------------------------------------------------------------------
转载http://bbs.csdn.net/topics/131060
- c++ builder 如何为application 增加热键(快捷键)
- 如何注册全局热键(c++builder)
- 为菜单增加热键
- C++Builder为C++增加的关键字
- C++Builder 快捷键大全
- c++builder快捷键大全
- C++Builder 快捷键
- c++builder快捷键大全
- C++Builder快捷键
- 为ClipX设置粘帖热键(Alt+C)
- 【ahk】为QQ增加激活主面板的热键
- [AHK]为通达信标记文字窗口的按钮增加热键
- .net中关于增加快捷键(热键)的方法,及UserControl中类似form的Active和Deactive事件
- 如何为你的应用程序设置热键?
- 【ahk】为招商证券通达信版增加热键显隐跳空缺口,热键ctrl+
- [C++] 如何在 C++ Builder 3.0 下混用两大 Application Framework VCL & MFC?
- 如何限制鼠标区域(c++builder)
- 【BCB】C++Builder常用快捷键(加粗为重点推荐)
- windows phone:在Windows Phone上使用QQConnect OAuth2
- MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案
- Eclipse中修改Tomcat的发布路径、发布方式、启动超时等信息
- 栈的顺序实现和链接实现
- IOS简单识记
- c++ builder 如何为application 增加热键(快捷键)
- 素数总结
- SQL Server 2008 重启电脑失败
- §2 回归系数的最小二乘估计
- cocos2d-x的场景
- 安装sql server 2008 报错“检查 Microsoft Visual Studio 2008 的早期版本”失败的问题解
- 学习设计模式六大设计原则之二
- Android中sharedPreferences的用法
- 开源NAC系统PacketFence的安装配置