mouse_event und SetPixel greifen auf verschiedene positionen zu?
-
hi leute
ich hab ein problem und zwar dass ich hier verschiedene x und y werte eingeben kann, und mein mauszeiger und der gezeichnete pixel stimmen nicht überein, wo liegt der fehler?HWND hwin; RECT ausmas; HDC dc; int screenX, screenY; USHORT x=90, y=90; COLORREF col = 0x0; hwin = FindWindow(NULL,"Rechner"); dc = GetDC(hwin); GetWindowRect(hwin, &ausmas); screenX=GetSystemMetrics(SM_CXSCREEN); screenY=GetSystemMetrics(SM_CYSCREEN); unsigned int nx=(ausmas.left + x) * (65535 / screenX), ny=(ausmas.top + y) * (65535 / screenY); mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, nx, ny, 0, 0); Sleep(1000); mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0,0, 0, 0); Sleep(1000); SetPixel(dc,x,y,col);vielen vielen dank
-
verwende lieber SetCursorPos um den Cursor auf eine bestimmte Position zu bringen.
-
Ein DC arbeitet auf Fenster Korrdinaten. Deine Maus auf Bildschirmkoordinaten.
Du musst also umrechnen. ClientToScreen, ScreenToClient!Ansonsten hör auf Melan. Warum den Holzhammer mouse_event benutzen?
-
zum umrechnen fon bildschirmkoordinaten hab ich ausmas genommen
GetWindowRect(hwin, &ausmas);und mit
unsigned int nx=(ausmas.left + x) * (65535 / screenX), ny=(ausmas.top + y) * (65535 / screenY);es auf das fenster bezogen.
macht ClientToScreen bzw ScreenToClient nicht das selbe?
hmm ich hab diese 2 funktionen nur in der mfc gefunden, ich muss mal versuchen ob es nicht ohne auch gehtvielen dank euch

-
Martin Richter schrieb:
Ein DC arbeitet auf Fenster Korrdinaten. Deine Maus auf Bildschirmkoordinaten.
Du musst also umrechnen. ClientToScreen, ScreenToClient!Ansonsten hör auf Melan. Warum den Holzhammer mouse_event benutzen?
Wer es sich leisten kann, einen Thread für 1 Sekunde auf den Bauch zu legen:
Nur ein Zuhälter!Ein Programmierer nicht.
