Ved du overhovedet hvad funktionen gør? Den har jo ikke nogen event, så du er nødt til at checke heletiden, ellers får du ikke svaret, inden det er blevet overskrevet af en anden key.
Lige netop derfor ville jeg også foretrække at kalde SetCapture. Derefter bliver alle museevents sendt til formen. At kalde GetAsyncKeyState hele tiden, tvinger jo maskinen i knæ, som jennemaan skriver.
chris2k > selv en PIIII1500Mhz med quadro cpu og dobbelt overliggende knastaksel vil have et betydeligt cpuforbrug ved timerinterval på 1... Du tvinger den til at kalde GetAsyncKeyState hvert millisekund! -og med Marshalling ned til user32.dll skal du bare se løjer!
SetCapture er den rigtige at bruge...
Alternativt skal du kalde GetAsyncKeystate i lostfocus event\'en af formen (for at fange klik uden for formen) og bruge den almindelige on_click for kliks på formen...
Sådan som jeg har løst det nu bruger jeg GetAsyncKeyState med et interval på 50 m. sek. Der er bare uhensigtsmæssigheder med GetAsyncKeyState i det tilfælde hvor jeg skal bruge det.
Jeg ville meget gerne kunne bruge SetCapture!! Mit problem er bare at jeg ikke ved hvordan jeg fange de museklik, der falder uden for Formen! De falder i hvertfald ikke i Form_MouseDown eventet!! I hvert fald ikke i min form i hvert fald!
Jeg bruger en form vist Modal så jeg kan ikke tester for at formen mister focus da den altid vil have focus med mindre en kontrol i formen tager focus. Og det er ikke dette jeg søger!
nolle_k>> Jeg har vist vildledt dig. SetCapture kan kun fange klik fra forme, der er oprettet af det samme program, der oprettede din modale form. Jeg gik ud fra, at det var den type klik, du var interesseret i, men hvis du også vil fange klik, der ligger på andre programmers forme eller på desktoppen, så kan du ikke bruge SetCapture. Og jeg har en mistanke om, at det vist er det du vil.
I den periode hvor min form er vist SKAL ALLE museklik gå til denne. Dette kan gøre i VC++ via SetCapture!! Det jeg ikke kan finde ud af er hvordan jeg fange museklikken. Det er FULDSTÆNDIG lige meget, hvor der klikkes!
nolle_k>> Hvis du kalder SetCapture, og brugeren derefter klikker på f.eks. et IE vindue, så vil din applikation ikke få noget at vide om det klik.
Det, du kan gøre med SetCapture er, at du kan forhindre musen i at gå udenfor din form så længe brugeren holder knappen nede. Hver gang du modtager en mousemove, sørger du bare for at placere musen indenfor din form. Men så snart brugeren slipper musetasten, så får du ikke længere mouseevents, og det tror jeg altså heller ikke at du kan i VC++.
nolle_k>> Jeg har selv tit brugt SetCapture i forbindelse med drag and drop operationer indenfor samme applikation. Her kan det tit være en fordel at hjælpe brugeren med at holde sig indenfor formen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.