Zum Inhalt springen

Mausbewegungen abfangen + Scrollrad


Empfohlene Beiträge

Hallo Leute!

Hat jemand eine Idee wie man in einer C++ Konsolenanwendung (kein MFC, etc.) Mausbewegungen abfangen kann?

Ich möchte einen Punkt in einem drei dimensionalen Raum bewegen.

=> Mein 3 dimensionales Koordinatensystem hat die Achsen X, Y und Z.

Nun habe ich mir gedacht das die Mausbewegungen nach rechts und links die x Koordinaten ändern und die bewegungen nach oben und unten die Y Koordinate.

Das Scrollrad soll die Z Koordinaten übenehmen.

Leider habe keinen Ansatz wie ich das realisiern könnte.

Pseudocode:



if( maus wird nach oben bewegt ) { Y++; }

if( maus wird nach unten bewegt) { Y--; }


if( maus wird nach rechts bewegt ) { X++; }

if( maus wird nach ulinks bewegt  ) { X--; }


if( scrollrad wird nach oben bewegt ) { Z++; }

if( scrollrad  wird nach unten bewegt) { Z--; }



Gruß

Happyman0815

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ansatz:


#include <cstdlib>

#include <iostream>



HWND GetConsoleHwnd(void);

using namespace std;


int main(int argc, char *argv[])

{

    MSG messages; 

    HWND hwnd =  GetConsoleHwnd(); 


    while (GetMessage (&messages, NULL, 0, 0))

    {

        /* Translate virtual-key messages into character messages */

        TranslateMessage(&messages);

        /* Send message to WindowProcedure */

        DispatchMessage(&messages);

    }


    system("PAUSE");

    return EXIT_SUCCESS;

}




LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message)                  /* handle the messages */

    {

        case WM_DESTROY:

            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */

            break;


        case WM_LBUTTONDOWN:

             std::cout << "Linksklick";

            break;


        case WM_MOUSEWHEEL:

             //MessageBox(hwnd,"Aktuelle Zeichenfarbe ist Weiss","lol",MB_OK);

             std::cout << "Scrollrad";

             return 0;

             break;

        default:                      /* for messages that we don't deal with */

            return DefWindowProc (hwnd, message, wParam, lParam);

    }


    return 0;

}




   HWND GetConsoleHwnd(void)

   {

       #define MY_BUFSIZE 1024 // Buffer size for console window titles.

       HWND hwndFound;         // This is what is returned to the caller.

       char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated

                                           // WindowTitle.

       char pszOldWindowTitle[MY_BUFSIZE]; // Contains original

                                           // WindowTitle.


       // Fetch current window title.


       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);


       // Format a "unique" NewWindowTitle.


       wsprintf(pszNewWindowTitle,"%d/%d",

                   GetTickCount(),

                   GetCurrentProcessId());


       // Change current window title.


       SetConsoleTitle(pszNewWindowTitle);


       // Ensure window title has been updated.


       Sleep(40);


       // Look for NewWindowTitle.


       hwndFound=FindWindow(NULL, pszNewWindowTitle);


       // Restore original window title.


       SetConsoleTitle(pszOldWindowTitle);


       return(hwndFound);

   }

Leider werden die Messages nicht abgefangen :/

Es wird nur eine Message empfangen wenn ich die Fenster wechsel und dann wieder die Console in den Vordergrund hole.

Gruß

Happyman0815

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...