Maus einlesen - Win32 Anwendung
-
Hallo, ich programmiere schon länger in C++. Ich weiß auch wie ich einzelne Tasten mit WM_Keydown einlesen kann. Jetzt interessiere ich mich dafür, wie ich die Mausposition und das Klicken der linken/ rechten Maustaste einlesen kann. Wäre echt nett wenn mir, da einer ein Beispiel geben könnte.
Mfg Peta
Mein Quellcode zum Erstellen eines Fensters:
#include "stdafx.h" HWND hWnd = 0; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { hWnd = CreateMainWindow(hInstance); if(0 == hWnd) { MessageBox(0,"Fehler","Fehler",MB_OK); return 0; } MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX wndClass; wndClass.cbSize = sizeof(WNDCLASSEX); wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WindowFunc; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInstance; wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.lpszMenuName = NULL; wndClass.lpszClassName = "WindowClass"; wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); RegisterClassEx(&wndClass); return CreateWindowEx(NULL, "WindowClass", "Ein einfaches Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 400, 300, NULL, NULL, hInstance, NULL); } LRESULT CALLBACK WindowFunc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; break; case WM_PAINT: PAINTSTRUCT ps; HDC hDC; hDC = BeginPaint(hWnd,&ps); //Achtung hier beginnt der Bereich zum Zeichnen //Achtung hier endet der Bereich zum Zeichnen EndPaint(hWnd,&ps); return 0; break; } return (DefWindowProc(hwnd, msg, wParam, lParam)); }
-
Dazu gibts zwei Events: WM_SETCURSOR und WM_MOUSEMOVE.
Mittels GetCursorPos() kannst du passend dazu die aktuelle Position des Cursors auf dem Bildschirm feststellen.
-
Könntest du dazu auch noch ein Beispiel geben? Wäre echt nett.
Mfg Peta
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hier im WinAPI-Forum SuFu benutzen ... da findest du mehr als du lesen kannst ...
-
Ich hab jetzt hier im WinAPI-Forum das SuFu benutzt und frage mich wieso das immernoch nicht geht, bei hilfe bin ich sehr dankbar.
case WM_LBUTTONDOWN: xPos = LOWORD(lParam); yPos = HIWORD(lParam);Die Fehler sind:
1. Nichtaufgeloestes externes Symbol _main
2. 1 unaufgeloeste externe VerweiseMfg Peta
-
du baust ne konsolenanwendung, bau mal ne subsystem:windoof anwendung

-
Hallo Peta,
ich bin C++Anfänger.
kannst dumir bitte mit der WM_Keydown ein beispiel code zeigen.ich möchte eventuel ein dll erzeugen und in Excel vba es anwenden.
mfg
NedimPeta schrieb:
Hallo, ich programmiere schon länger in C++. Ich weiß auch wie ich einzelne Tasten mit WM_Keydown einlesen kann. Jetzt interessiere ich mich dafür, wie ich die Mausposition und das Klicken der linken/ rechten Maustaste einlesen kann. Wäre echt nett wenn mir, da einer ein Beispiel geben könnte.
Mfg Peta
Mein Quellcode zum Erstellen eines Fensters:
#include "stdafx.h" HWND hWnd = 0; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { hWnd = CreateMainWindow(hInstance); if(0 == hWnd) { MessageBox(0,"Fehler","Fehler",MB_OK); return 0; } MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX wndClass; wndClass.cbSize = sizeof(WNDCLASSEX); wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WindowFunc; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInstance; wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.lpszMenuName = NULL; wndClass.lpszClassName = "WindowClass"; wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); RegisterClassEx(&wndClass); return CreateWindowEx(NULL, "WindowClass", "Ein einfaches Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 400, 300, NULL, NULL, hInstance, NULL); } LRESULT CALLBACK WindowFunc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; break; case WM_PAINT: PAINTSTRUCT ps; HDC hDC; hDC = BeginPaint(hWnd,&ps); //Achtung hier beginnt der Bereich zum Zeichnen //Achtung hier endet der Bereich zum Zeichnen EndPaint(hWnd,&ps); return 0; break; } return (DefWindowProc(hwnd, msg, wParam, lParam)); }