На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Горячие клавиши
    Как сделать так чтобы горячие клавиши из проги были доступны когда она не активна
      Имхо, тут только хуки помогут...
        ExpandedWrap disabled
          int vk = 0x45;      // клавиша "Е" латинская<br>RegisterHotKey(hWnd,1000+(MOD_ALT*0x100)+vk,MOD_ALT,vk);      // регистрируем ALT-E как горячую клавишу<br>

          Цитата eprup, 26.07.02, 13:44:51
          Имхо, тут только хуки помогут...

          хм ... а у меня RegisterHotKey всегда срабатывает и когда активна и когда не активна ...
            Нда... что-то с памятью моей стало... :(
              Спасибо за помощь, но .... только теперь проблема в том как грамотно обработать событие по нажатию клавиши, как вызвать нужную подпрограмму.
              Ну не доходит до меня как она вызывается по нажатию горячей клавиши :-\
              Сообщение отредактировано: daemon -
                Цитата daemon, 27.07.02, 07:34:48
                Спасибо за помощь, но .... только теперь проблема в том как грамотно обработать событие по нажатию клавиши, как вызвать нужную подпрограмму.
                Ну не доходит до меня как она вызывается по нажатию горячей клавиши :-\

                лови сообщение WM_HOTKEY... а дальше номер HotKey'а храниЦа в wParam...
                  так вся проблема как раз в том что я это сообщение поймать и не могу, как грамотно его отловить-то  :-/
                    я в API это делал так:
                    ExpandedWrap disabled
                      LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)<br>{<br><br>      switch(msg)  {<br>            case WM_HOTKEY:<br>                                 .....<br><br>                                 break;<br>

                    В MFC это делается в карте сообщений ...
                      еще не надоел? а как все это вставить в билдер?
                        Цитата daemon, 29.07.02, 10:36:35
                        еще не надоел? а как все это вставить в билдер?

                        Copy/Cut+Drag'n'Drop
                          ээээ, всмысле в какое место :), а не как
                            Вот тут поройся.


                            http://www.monstersoft.narod.ru/programming/builder/faq019.html
                            http://www.monstersoft.narod.ru/programming/builder/faq020.html
                            http://www.monstersoft.narod.ru/programming/builder/faq021.html
                            http://www.monstersoft.narod.ru/programming/builder/faq022.html
                            http://www.monstersoft.narod.ru/programming/builder/faq023.html

                            А вообще примерно вот так только тут я ловил WM_CLOSE


                            ExpandedWrap disabled
                                      BEGIN_MESSAGE_MAP<br>                VCL_MESSAGE_HANDLER(WM_CLOSE, TWMClose, OnClose)<br>        END_MESSAGE_MAP(TForm)<br><br><br>void TForm1::OnClose(TWMClose& a)<br>{<br>Form1->Hide();<br>        //TODO: Add your source code here<br>}<br>
                            Сообщение отредактировано: Monster -
                              вот что у меня получилось

                              h:
                              ....
                              private:
                                     BEGIN_MESSAGE_MAP
                                       MESSAGE_HANDLER(WM_HOTKEY,TMessage,WMHotkey)
                                     END_MESSAGE_MAP(TForm)
                              .....

                              cpp:

                              int HOTKEYHIDE=GlobalAddAtom("E");

                              void __fastcall TForm1::FormCreate(TObject *Sender)
                              {
                                  int vk=0x45;
                              BOOL bSuccess = RegisterHotKey(Form1,HOTKEYHIDE,MOD_ALT,vk);
                                  if(!bSuccess)
                                   {
                                   MessageBox(Form1, "RegisterHotKey failed.", "Error",MB_OK | MB_ICONERROR);
                                   }
                              }
                              //---------------------------------------------------------------------------
                              void __fastcall TForm1::WMHotkey(TMessage &Msg)
                              {
                                   if (Msg.WParam==HOTKEYHIDE)
                                     {
                                      .......
                                     }
                              }

                              ну не хочет работать  :-[, и чего опять не так
                              Сообщение отредактировано: daemon -
                                Попробуй не GlobalAtom'ами, а руками поставить номер. Он должен быть в отрезке(0x0000,0xBFFF).
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0756 ]   [ 17 queries used ]   [ Generated: 19.04.24, 01:20 GMT ]