Ĺadny brzuch
Czy istnieje możliwoś stworzenia globalnego hotkey'a w BCB. W winapi nie ma z tym problemu rejestruje hotkey'a a następnie umieszczam odpowiedni kod w funkcji obsługującej komunikaty. Ale nie wiem jak to zrobić w BCB? Najlepiej gdyby dało się dobrać jakoś do funkcji obsługi komunikatów ale jak?
P.S. szukałem na google ale nie wiele znalazłem.
http://cyfbar.republika.pl/form.html
szukaj BEGIN_MESSAGE_MAP :)
w sumie to znalazłem rozwiązanie tego problemu.:
WindowProc=funkcja; funkcja staje się funkcja obsługi komunikatów:)
i już myślałem sobie że wszystko ok a tu jednak nie. Nie wiem dlaczego nie rozpoznaje moja funkcja że został wciśnięty jakiś klawisz. tzn nowy problem wygląda tak:
poniższa funkcja nie działa nic się nie dzieje gdy zostanie naciśnięty klawisz a;
funkcja(TMessage &mss) { if(mss.WParam==0x41) {....} else WindowProc=WndProc; }
natomiast działa ta funkcja, rozpoznaje gdy nacisnę klawisz a
funkcja(TMessage &mss) { if(mss.WParam==0x41) {.... (WindowProc=WndProc); -to może być albo nie i tak działa funkcja } }
podobnie nie działa wogóle dla powyższych funkcji rozpoznanie (mss.Msg==WM_KEYDOWN)
WM_HOTKEY
wie ktoś o co chodzi?
Spójrz na temat http://forum.ks-eksp...showtopic=64074 i zamień WM_USER na WM_HOTKEY. Za chwilę napiszę przykład i dam Ci linka :)
Masz: http://rapidshare.de...1/asas.zip.html
Użytkownik Cyrkiel edytował ten post 12 listopad 2005, 11:17
private: // User declarations void __fastcall Komunikat(TWMLButtonUp& Message); public: // User declarations __fastcall TForm1(TComponent* Owner); BEGIN_MESSAGE_MAP; MESSAGE_HANDLER(WM_LBUTTONUP, TWMLButtonUp, Komunikat); END_MESSAGE_MAP(TForm);
void __fastcall TForm1::Komunikat(TWMLButtonUp& Message) { ShowMessage("LOL"); }
To jest do obsługi przycisku myszy, po drobnej modyfikacji powinno działać dla klawiszy
(należy zamienic WM_LBUTTONUP na komunikat klawisza i jescze to TWMLButtonUp trza zmienić)
Użytkownik DarkCez edytował ten post 12 listopad 2005, 11:55
a może ma ktoś jakąś myśl dlaczego nie działa to:
if(msg.Msg==WM_KEYDOWN)
{....}
gdy ustawię nową funkcję do obsługi komunikatów jak pisałem wcześniej
a może ma ktoś jakąś myśl dlaczego nie działa to:
if(msg.Msg==WM_KEYDOWN)
{....}
gdy ustawię nową funkcję do obsługi komunikatów jak pisałem wcześniej Ściągnij to i zobacz http://rapidshare.de...1/asas.zip.html. WM_KEYDOWN działa przecież tylko w oknie, a WM_HOTKEY globalnie :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
P.S. szukałem na google ale nie wiele znalazłem.
http://cyfbar.republika.pl/form.html
szukaj BEGIN_MESSAGE_MAP :)
w sumie to znalazłem rozwiązanie tego problemu.:
WindowProc=funkcja; funkcja staje się funkcja obsługi komunikatów:)
i już myślałem sobie że wszystko ok a tu jednak nie. Nie wiem dlaczego nie rozpoznaje moja funkcja że został wciśnięty jakiś klawisz. tzn nowy problem wygląda tak:
poniższa funkcja nie działa nic się nie dzieje gdy zostanie naciśnięty klawisz a;
funkcja(TMessage &mss) { if(mss.WParam==0x41) {....} else WindowProc=WndProc; }
natomiast działa ta funkcja, rozpoznaje gdy nacisnę klawisz a
funkcja(TMessage &mss) { if(mss.WParam==0x41) {.... (WindowProc=WndProc); -to może być albo nie i tak działa funkcja } }
podobnie nie działa wogóle dla powyższych funkcji rozpoznanie (mss.Msg==WM_KEYDOWN)
WM_HOTKEY
wie ktoś o co chodzi?
Spójrz na temat http://forum.ks-eksp...showtopic=64074 i zamień WM_USER na WM_HOTKEY. Za chwilę napiszę przykład i dam Ci linka :)
Masz: http://rapidshare.de...1/asas.zip.html
Użytkownik Cyrkiel edytował ten post 12 listopad 2005, 11:17
private: // User declarations void __fastcall Komunikat(TWMLButtonUp& Message); public: // User declarations __fastcall TForm1(TComponent* Owner); BEGIN_MESSAGE_MAP; MESSAGE_HANDLER(WM_LBUTTONUP, TWMLButtonUp, Komunikat); END_MESSAGE_MAP(TForm);
void __fastcall TForm1::Komunikat(TWMLButtonUp& Message) { ShowMessage("LOL"); }
To jest do obsługi przycisku myszy, po drobnej modyfikacji powinno działać dla klawiszy
(należy zamienic WM_LBUTTONUP na komunikat klawisza i jescze to TWMLButtonUp trza zmienić)
Użytkownik DarkCez edytował ten post 12 listopad 2005, 11:55
a może ma ktoś jakąś myśl dlaczego nie działa to:
if(msg.Msg==WM_KEYDOWN)
{....}
gdy ustawię nową funkcję do obsługi komunikatów jak pisałem wcześniej
a może ma ktoś jakąś myśl dlaczego nie działa to:
if(msg.Msg==WM_KEYDOWN)
{....}
gdy ustawię nową funkcję do obsługi komunikatów jak pisałem wcześniej Ściągnij to i zobacz http://rapidshare.de...1/asas.zip.html. WM_KEYDOWN działa przecież tylko w oknie, a WM_HOTKEY globalnie :)