15. februar 2000 - 14:06Der er
5 kommentarer og 1 løsning
MVC++6 && onButtonDown
Jeg har lavet nogle Bitmaps i nogle picture bokse. Derefter har jeg lavet deres IDC_STATIC om. så der kan kaldes event'en onClick på dem. Jeg har imidlertid også brug for at kunne fange onLeftMouseButtonDown (eller noget i den stil) på dem. Det første jeg prøvede var at sætte en BOOL der indikerede om der var blevet trykket på billedet, men vinduets onLeftMouseButtonDown (eller hvad den hedder) reagerede ikke. Så hvordan får man den til det? Det jeg er ved at lave, er en timer der måler hvor længe musen har været trykket ned.
Der var du nok lige karrig nok med pointene svante !?!? I BCB får man på onKeyDown eventen et ekstra flag med som parameter, der fortælle hvilken type key down (herunder også musetasten, hvis det var et museklik) man fik. Du kan hente dette "state", ved at kalde GetKeyState API'en:
SHORT GetKeyState( int nVirtKey // virtual-key code );
Det der skal til er at du, når der trykkes på Bitmappen, kalder SetCapture() funktionen, der gør at alle MuseInput bliver sendt til det vindue, der kalder SetCapture.
Der er lidt kode her, der illustrerer hvordan det kunne gøres.
OnLButtonClick(...) {
//get The time for later calculation
for (;;) { MSG msg;
//Get all Mouse Input SetCapture();
//Get Messages ::GetMessage(&msg, NULL, 0, 0);
//Which message? switch (msg.message) { case WM_LBUTTONDOWN: { //release the capture ReleaseCapture(); //Get new time and subtract the old one //From this return } case WM_RBUTTONDOWN: break; case WM_LBUTTONUP: break; case WM_RBUTTONUP: break; case WM_MOUSEMOVE: break; case WM_KEYDOWN: break;
En bug i eksperten? Når der gives 0 point for et spørgsmål. kan man tilsyneladende ikke acceptere et svar, hvis der er andre der har svaret, som ikke er afvist? nolle_k, jeg poster en meddelelse med 60 point til dig.
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.