Hi,
ich setze mit Hilfe von:
SendMessage(DesktopHandle, LVM_SETITEMPOSITION,
icon.Index, posX + (posY << 16));
Die Position eines Desktop Icons. Das funktioniert ganz gut, aber wenn man das ca. 15 mal hintereinander macht, dann fällt auf, dass das Icon nach oben rausrutscht, d.h. das es immer 1 Pixel nach oben geht. Was ist fehlerhaft an dem Aufruf?
Danke
one of two
"Wir sind die Borg. Sie werden assimiliert werden. Deaktivieren Sie Ihre Schutzschilde und ergeben Sie sich. Wir werden ihre biologischen und technologischen Charakteristika den unsrigen hinzufügen. Ihre Kultur wird sich anpassen und uns dienen. Widerstand ist zwecklos!"
Zum zusammenbauen des lParams verwende ich immer
public static IntPtr MakeLParam(int wLow, int wHigh)
{
return (IntPtr)((wHigh << 16) | (wLow & 0xffff));
}
posY ist auch immer gleich?
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
japp, posY ist immer gleich. Werd mal deine Methode testen...
EDIT: Mensch, toll, deine MakeLParam scheint zu funzen, THX 😃
Aber damit ich nicht nur einfach CoppyPaste, kannste mir die mal erklären?
Danke
one of two
"Wir sind die Borg. Sie werden assimiliert werden. Deaktivieren Sie Ihre Schutzschilde und ergeben Sie sich. Wir werden ihre biologischen und technologischen Charakteristika den unsrigen hinzufügen. Ihre Kultur wird sich anpassen und uns dienen. Widerstand ist zwecklos!"
Naja... hast du denn die letzten 16 Bit von posX auf 0 gesetzt (Oder erst garnicht verschoben)? Weil Addieren im Binär-System ist eine XOR-Operation mit Übertrag.
Was du gemacht hast:
01101011+ // nehmen wir an, das hier wäre posX
00011010 // das hier posY
üüüü ü // Steht für Übertrag von '1'
---------
10000101
Was du wolltest:
01100000 ODER
00001010
-----------
01101010
Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat