主题:win32程序中注册热键问题 ?急……
我想在我的win32程序中使用热键来达到隐藏窗体和显示窗体的目的。搜索以前的帖子看到一篇BCB下的用法:
//头文件中
......
private: // User declarations
void __fastcall ReceiveMessage(TMessage &MyMsg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HOTKEY, TMessage, ReceiveMessage)
END_MESSAGE_MAP(TForm)
......
//单元文件中
......
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int HotKeyId = GlobalAddAtom("MyHotKey") - 0xC000;
RegisterHotKey(Handle, HotKeyId, MOD_CONTROL, 0x41);
}
......
void __fastcall TForm1::ReceiveMessage(TMessage &MyMsg)
{
if((MyMsg.LParamLo == MOD_CONTROL) && (MyMsg.LParamHi == 0x41))
{
//按下Ctrl+A将执行的代码
}
TForm::Dispatch(&MyMsg);
}
但是我将它复制到我的程序后发现没有作用。然后用MessageBox函数看了下是否执行到了FormCreate函数,发现程序就没有执行到这里。我的问题:
1、如何修改程序使之能执行FormCreate函数?
2、我查了下MSDN中关于RegisterHotKey的用法,发现只要HotKeyId是个常数即可,但是为什么还要int HotKeyId = GlobalAddAtom("MyHotKey") - 0xC000; 一下呢?(查询了N多有关RegisterHotKey的例子,发现里面都有用到这种方法)
3、RegisterHotKey函数中的第一个参数Handle之前并没有定义,可是为什么还能正常编译过去呢?
4、窗体的隐藏和显示是否可以直接这样:
TForm1->DOHIDE();//hide window
TForm1->DOSHOW();//show window?
5、如果该程序要用vc6。0编译,请问应该如何修改?
小弟初学win32编程,还请大家帮忙,最好能符完整代码,也好让我认识的更清楚。谢谢!
//头文件中
......
private: // User declarations
void __fastcall ReceiveMessage(TMessage &MyMsg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HOTKEY, TMessage, ReceiveMessage)
END_MESSAGE_MAP(TForm)
......
//单元文件中
......
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int HotKeyId = GlobalAddAtom("MyHotKey") - 0xC000;
RegisterHotKey(Handle, HotKeyId, MOD_CONTROL, 0x41);
}
......
void __fastcall TForm1::ReceiveMessage(TMessage &MyMsg)
{
if((MyMsg.LParamLo == MOD_CONTROL) && (MyMsg.LParamHi == 0x41))
{
//按下Ctrl+A将执行的代码
}
TForm::Dispatch(&MyMsg);
}
但是我将它复制到我的程序后发现没有作用。然后用MessageBox函数看了下是否执行到了FormCreate函数,发现程序就没有执行到这里。我的问题:
1、如何修改程序使之能执行FormCreate函数?
2、我查了下MSDN中关于RegisterHotKey的用法,发现只要HotKeyId是个常数即可,但是为什么还要int HotKeyId = GlobalAddAtom("MyHotKey") - 0xC000; 一下呢?(查询了N多有关RegisterHotKey的例子,发现里面都有用到这种方法)
3、RegisterHotKey函数中的第一个参数Handle之前并没有定义,可是为什么还能正常编译过去呢?
4、窗体的隐藏和显示是否可以直接这样:
TForm1->DOHIDE();//hide window
TForm1->DOSHOW();//show window?
5、如果该程序要用vc6。0编译,请问应该如何修改?
小弟初学win32编程,还请大家帮忙,最好能符完整代码,也好让我认识的更清楚。谢谢!