Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

  • 2 Wochen später...
Geschrieben

Deine WindowProcedure ist in Ordnung, aber GetConsoleHwnd scheint mir nicht unbedingt koscher. Probier es mal mit einem 'echten' Window (CreateWindow).

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...