如何在CB中定义系统热键
在CB中用RegisterHotKey定义系统热键的程序要如何写。 问题点数:20、回复次数:4Top
1 楼huang_jihua(不懂...学习)回复于 2003-05-14 11:48:29 得分 10
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int tid;
strList=new TStringList();
tid=GlobalFindAtom(AnsiString("MyHotkey").c_str());
if(tid==0)
{
id=GlobalAddAtom(AnsiString("MyHotkey").c_str());
}
else
{
id=tid;
}
strList->Add(IntToStr(id));
RegisterHotKey(Handle, id, MOD_CONTROL, VK_F1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Handle,StrToInt(strList->Strings[0]));
GlobalDeleteAtom(StrToInt(strList->Strings[0]));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(Msg.message==WM_HOTKEY && ((int)Msg.wParam)==StrToInt(strList->Strings[0]))
{
//SetForegroundWindow(Handle);
//ShowMessage("Ok");
this->Visible=!this->Visible;
}
}Top
2 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2003-05-14 12:41:16 得分 10
最近我也刚试了热键
Ahift-ctrl-alt-<space>
Ahift-ctrl-alt-<return>
Ahift-ctrl-alt-<f1>
// 一、定义热键
#define HotkeyID1 0xb123
#define HotkeyID2 0xb124
#define HotkeyID3 0xb125
RegisterHotKey(Handle,HotkeyID1,
MOD_ALT+MOD_CONTROL+MOD_SHIFT,
VK_RETURN);
RegisterHotKey(Handle,HotkeyID2,
MOD_ALT+MOD_CONTROL+MOD_SHIFT,
VK_SPACE);
RegisterHotKey(Handle,HotkeyID3,
MOD_ALT+MOD_CONTROL+MOD_SHIFT,
VK_F1);
// 二、得到热键通知
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
if (Message.Msg==WM_HOTKEY) // LParamHi: VirtualKey
{ // LParamLo: key-modifier
if (Message.LParamHi==VK_RETURN)
;// 热键ID1处理
else
if (Message.LParamHi==VK_SPACE)
;// 热键ID1处理
else
if (Message.LParamHi==VK_F1)
;// 热键ID1处理
}
TForm::WndProc(Message);
}
// 三、注销热键
UnregisterHotKey(Handle,HotkeyID1);
UnregisterHotKey(Handle,HotkeyID2);
UnregisterHotKey(Handle,HotkeyID3);
Top
3 楼asimpleman(simple_man)回复于 2003-05-14 22:21:45 得分 0
gzTop
4 楼yingyys(鹰)回复于 2003-05-15 18:08:09 得分 0
都被高手们说了!Top



