Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

dijalog ne prima WM_KEYDOWN

[es] :: C/C++ programiranje :: dijalog ne prima WM_KEYDOWN

[ Pregleda: 1883 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon dijalog ne prima WM_KEYDOWN13.01.2004. u 16:37 - pre 247 meseci
(okruzenje je vc6)
Imam jedan dijalogčić u koji treba da se ukuca neki rezultat i napravljen je kao mali digitron, dakle nema edit box ili slično. Sve funkcioniše kako treba sa mišem, ali neće da prihvati kada se kuca sa tastature.
Startujem ga sa DialogBox() funkcijom i imam svoj message handler. Style mu je Popup. Nema title bar. Na pritiskanje tastera reaguje kao kad radiš u win nešto što ne može (čuje se neki tupavi zvuk). Osim naravno na esc, enter i tab. Prilikom trace-a nikad ni ne dođe do provere za WM_KEYDOWN.
Moja dijagnoza je da neka kontrola na samom dijalogu ima input focus, a ne sam dijalog. Pošto nema kontrole koja bi reagovala na tastaturu, kaže - ne može. Pokušao sam u WM_INITDIALOG da postavim fokus na dijalog, ali ništa.

Kako rešiti ovo?
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.oak.inreach.net



+1001 Profil

icon Re: dijalog ne prima WM_KEYDOWN13.01.2004. u 17:01 - pre 247 meseci
Recept je da override-ujes virtual method PreTranslateMessage

BOOL CProbaDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYUP)
{
int nPaziOvoIpakRadi = 1; // ovde zabodes breakpoint
// Odavde zoves svoj handler za WM_KEYUP
}
return CDialog::PreTranslateMessage(pMsg);
}
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: dijalog ne prima WM_KEYDOWN14.01.2004. u 13:44 - pre 246 meseci
Hvala na odgovorru ali na žalost ne koristim MFC, tako da ovako ne mogu. Probaću da ubacim između GetMessage() i TranslateMessage(), trebalo bi da bude isto.
Ali i dalje me zanima zašto se dešava to što sam opisao i da li je moja dijagnoza dobra?
Code:

if (nPaziOvoIpakRadi==1)
    fala_puno = TRUE;
else
    fala_opet = TRUE;

:)
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.oak.inreach.net



+1001 Profil

icon Re: dijalog ne prima WM_KEYDOWN14.01.2004. u 21:55 - pre 246 meseci
Verovatno zato sto je dijalog klasa napravljena tako da primarno odmah
prosledjuje poruke ostalim GUI elementima. PreTranslateMessage( ) je uglavnom
i napravljena zbog toga da i sama dijalog klasa moze da procesira odredjene poruke.
 
Odgovor na temu

[es] :: C/C++ programiranje :: dijalog ne prima WM_KEYDOWN

[ Pregleda: 1883 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.