Własna kontrolka z obsługą klawiatury

Własna kontrolka z obsługą klawiatury
GM
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam serdecznie.

Mam problem następującej natury: zrobiłem sobie kontrolkę, do której wczytywane są dane za pomocą klawiatury i wszystko byłoby cacy gdyby nie fakt, że używając mojej kontrolki w oknie dialogowym przyciski są obsługiwane przez okno dialogowe co objawia się dźwiękiem wysyłanym po wciśnięciu dowolnego przycisku klawiatury (bardzo denerwujące zjawisko).

W kontrolkach typu EDIT ten problem nie istnieje co oznacza że nasz ukochany Microsoft znalazł i zastosował jakiś przebiegły sposób obchodzący to niemiłe zjawisko. Pytanie z jakim się zwracam jest chyba oczywiste ale na wszelki wypadek je napiszę: Jak można to obejść. Do tej pory przyszło mi na myśl że może za pomocą haków, ale nie chcę ich stosować jeżeli jest jakieś prostsze rozwiązanie.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

Tak, bardzo przebiegły, twoja kontrolka musi być w stanie przyjąć focus.

GM
  • Rejestracja: dni
  • Ostatnio: dni
0

właśnie przyjmuje fokus ale po wciśnięciu jakiegokolwiek przycisku pojawia się dodatkowo dźwięk w tle, co oznacza że nie tylko ja obsługuję w oknie dialogowym zdarzenia związane z klawiaturą Czyli do kontrolki przychodzą komunikaty WM_KEYDOWN, WM_CHAR pow wciśnięciu przycisków klawiatury ale okno dialogowe obsługuje przy tym w tle inne operacje związane z klawiaturą, takie jak denerwujący dźwięk w momencie wciśnięcia jakiegokolwiek przycisku

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

A nie przekazujesz przypadkiem komunikatów dalej ?
W jakiej technologi w ogóle robisz tą kontrolkę ?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 513
0

W swojej kontrolce powinieneś reagować na WM_GETDLGCODE, zwracając np. DLGC_WANTCHARS by odbierać klawisze takie jak cyfry i litery (w WM_CHAR).

Edit w WM_GETDLGCODE robi to:

Returns the following values: DLGC_WANTCHARS, DLGC_HASSETSEL, and DLGC_WANTARROWS. In multiline edit controls, it also returns DLGC_WANTALLKEYS. If the user presses ALT+BACKSPACE, it also returns DLGC_WANTMESSAGE.

GM
  • Rejestracja: dni
  • Ostatnio: dni
0

sapero - dzięki wielkie o to mnie chodziło właśnie, tak myślałem że to jakiś komunikat musi być ale nie mogłem znaleźć odpowiedniego, jeszcze raz wielkie dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.