Qwark Skrevet 27. august 2008 Del Skrevet 27. august 2008 void __fastcall enKlasse::WndProc(TMessage& aMsg) { if(aMsg.Msg == WM_KEYDOWN) { if (aMsg.WParam == VK_SHIFT) { m_bShiftDown = true; } } else if(aMsg.Msg == WM_KEYUP) { if (aMsg.WParam == VK_SHIFT) { m_bShiftDown = false; } } else if(aMsg.Msg==WM_CUSTOM_PASTE_CLIPBOARD_DATA_ON_IE) { Helper::AddDataFromClipboard(browser); } } Er det noen opplagte feil her? Jeg klarer ikke å få aMsg.Msg == WM_KEYDOWN og aMsg.Msg == WM_KEYUP til å bli true, uansett hva jeg gjør. Lenke til kommentar
OldMan Skrevet 27. august 2008 Del Skrevet 27. august 2008 Hvis vinduet ditt ikke har focus, vil det ikke få disse meldingene fra os. Prøv å kalle SetFocus fra f.eks WM_KEYDOWN. Det er også enklere å bruke GetKeyState(VK_SHIFT) der hvor du trenger det istedefor å prøve å lagre det selv i en egen variabel (m_bShiftDown). Lenke til kommentar
Qwark Skrevet 27. august 2008 Forfatter Del Skrevet 27. august 2008 Hadde det bare vært for å sjekke om shift er nede så kunne jeg brukt GetKeystate, Men det jeg prøver å oppnå men som ikke vises i koden er at når en spesifik komponent har fokus så trenger jeg å få vite om shift er nede og tab blir trykket og når en annen spesifikk komponent er i fokus så trenger jeg å vite når tab er trykket. Men Tab tasten fyrer ikke av noen event slik som alle andre taster annet en at den endrer sin Keystate mellom 0 og 1. Dette ble litt rotete men håper noen forstår problemet..... Lenke til kommentar
OldMan Skrevet 27. august 2008 Del Skrevet 27. august 2008 (endret) Vel, tab forsvinner vanligvis i TranslateMessage/IsDialogMessage kall i message loopen din. Dette fordi windows bruker tab til å skifte fokus mellom child vinduer. Vet ikke hvilket rammeverk du bruker her, men se om den har en PreTranslateMessage funksjon eller liknende. Eventuelt kan du bruke WM_GETDLGMESSAGE med retur av DLGC_WANTALLKEYS. Hjelp her. Alt dette gjeler som sagt kun hvis vinduet ditt har fokus. Hvis det er child vinduer som har fokus så er det de som vil få WM_KEYDOWN etc. Da må du enten subklasse dem eller lage en global keyboard hook. Endret 27. august 2008 av OldMan Lenke til kommentar
GeirGrusom Skrevet 29. august 2008 Del Skrevet 29. august 2008 Vet ikke hvilket rammeverk du bruker her, men se om den har en PreTranslateMessage funksjon eller liknende. Tror det er Borland C++ sitt OWL bibliotek. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå