Własna kontrolka z obsługą klawiatury

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.

0

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

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

0

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

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1