Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.81.240] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Как сделать так чтобы горячие клавиши из проги были доступны когда она не активна
|
Сообщ.
#2
,
|
|
|
Имхо, тут только хуки помогут...
|
Сообщ.
#3
,
|
|
|
int vk = 0x45; // клавиша "Е" латинская<br>RegisterHotKey(hWnd,1000+(MOD_ALT*0x100)+vk,MOD_ALT,vk); // регистрируем ALT-E как горячую клавишу<br> |
Сообщ.
#4
,
|
|
|
Цитата eprup, 26.07.02, 13:44:51 Имхо, тут только хуки помогут... хм ... а у меня RegisterHotKey всегда срабатывает и когда активна и когда не активна ... |
Сообщ.
#5
,
|
|
|
Нда... что-то с памятью моей стало...
|
Сообщ.
#6
,
|
|
|
Спасибо за помощь, но .... только теперь проблема в том как грамотно обработать событие по нажатию клавиши, как вызвать нужную подпрограмму.
Ну не доходит до меня как она вызывается по нажатию горячей клавиши :-\ |
Сообщ.
#7
,
|
|
|
Цитата daemon, 27.07.02, 07:34:48 Спасибо за помощь, но .... только теперь проблема в том как грамотно обработать событие по нажатию клавиши, как вызвать нужную подпрограмму. Ну не доходит до меня как она вызывается по нажатию горячей клавиши :-\ лови сообщение WM_HOTKEY... а дальше номер HotKey'а храниЦа в wParam... |
Сообщ.
#8
,
|
|
|
так вся проблема как раз в том что я это сообщение поймать и не могу, как грамотно его отловить-то :-/
|
Сообщ.
#9
,
|
|
|
я в API это делал так:
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 это делается в карте сообщений ... |
Сообщ.
#10
,
|
|
|
еще не надоел? а как все это вставить в билдер?
|
Сообщ.
#11
,
|
|
|
Цитата daemon, 29.07.02, 10:36:35 еще не надоел? а как все это вставить в билдер? Copy/Cut+Drag'n'Drop |
Сообщ.
#12
,
|
|
|
ээээ, всмысле в какое место , а не как
|
Сообщ.
#13
,
|
|
|
Вот тут поройся.
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 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> |
Сообщ.
#14
,
|
|
|
вот что у меня получилось
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) { ....... } } ну не хочет работать :-[, и чего опять не так |
Сообщ.
#15
,
|
|
|
Попробуй не GlobalAtom'ами, а руками поставить номер. Он должен быть в отрезке(0x0000,0xBFFF).
|