5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  Windows SDK/API

如何在CB中定义系统热键

楼主gaoxumei(无情剑客)2003-05-14 11:06:03 在 C++ Builder / Windows SDK/API 提问

在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

相关问题

  • 请问用vb能不能定义系统热键?如果能怎么定义?
  • 求助:如何定义一个系统热键...
  • 有关定义系统级热键的问题!!!UP者有分
  • 如何实现“双击鼠标右键”的系统热键定义?
  • 定义热键的问题
  • 如何定义热键?
  • 想给系统定义一个热键ESC,当按下时SHOWMESSAGE(‘...’);可不知为何下面代码不行?
  • 系统热键的定义:不能用循环或者计时器且与窗口无关,高手请进!!!
  • 我想用RegisterHotKey设置系统热键,但用THotKey控件来由用户自己定义要设置的热键,请问应该怎么办
  • 如何定义程序的热键

关键词

  • 热键
  • hotkeyid
  • strlist
  • lparamhi
  • ahift
  • registerhotkey
  • unregisterhotkey
  • vk
  • mod
  • fastcall tform

得分解答快速导航

  • 帖主:gaoxumei
  • huang_jihua
  • BCB

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问