mauszeiger im screenshot berücksichtigen
-
hallo,
ich habe mich schon wunderbar von einem thread zum screen-shooten inspirieren lassen (den ich aber irgendwie nicht mehr finde, sonst hätte ich da weitergemacht), bin aber noch zu neu in BCB, um bei oben genanntem problem einen wertvollen einfall zu haben. wie übernehme ich also nun den mauszeiger in einen screenshot?
der oli
-
indem du mit getcursorposition die mausposition feststellst und dann den mauszeiger auf dein bild malst!
TPoint Pos; Getcursorpos(&Pos);
die position kannst du dann mit
Pos.x
und
Pos.y
abfragen
-
hallo,
diesen teil hatte ich mir schon so vorgestellt, aber danke für die ausführung. die frage ging halt eher dahin, wie ich auf die darstellung des mauszeigers zugreife, um sie dann zu kopieren. auf welche methode/eigenschaft der maus muss ich zugreifen, um den zeiger zu kopieren?
der oli
-
Das geht so:
POINT pt; HWND hwnd; HCURSOR hCursor; DWORD threadID; GetCursorPos(&pt); hwnd = WindowFromPoint(pt); threadID = GetWindowThreadProcessId(hwnd, NULL); AttachThreadInput(GetCurrentThreadId(), threadID, TRUE); hCursor = GetCursor(); AttachThreadInput(GetCurrentThreadId(), threadID, FALSE);
Damit bekommst du gleich 2 Informationen: erstens, wo der Cursor sich befindet und zweitens das Handle des Cursors. AttachThreadInput() muss sein, sonst bekommst du nur den Standard-Cursor. Malen kannst du den Cursor dann per
DrawIcon(Image1->Canvas, pt.x, pt.y, hCursor);
-
hallo WebFritzi,
erstmal vielen Dank für deine erklärenden Vorschläge. habe deinen code passend in mein programm integriert und es gab keine probleme. leider wird der mauszeiger aber irgendwie (noch) nicht angezeigt. ich werde mich mit diesem problem die tage noch etwas auseinander setzen. wenn ich eine ahnung habe, warum dem so ist, meld ich mich noch mal. jetzt erst mal gute nacht,
der oli
-
WebFritzi schrieb:
...
DrawIcon(Image1->Canvas, pt.x, pt.y, hCursor);
Ich vermute stark, dass es so sein muss, damit es funktioniert:
DrawIcon(Image1->Canvas->Handle, pt.x, pt.y, hCursor);