Hallo,
du hast die Parameter mißverstanden, in der Delphi Hilfe steht folgendes:
Quelltext
1: 2: 3: 4: 5:
| WM_LBUTTONDOWN
fwKeys = wParam; // key flags xPos = LOWORD(lParam); // horizontal position of cursor yPos = HIWORD(lParam); // vertical position of cursor |
fwKey ist der wParam Parameter , bei dir MK_Control,
Dann ist xPos der untere Word Anteil des lParam und yPos der obere Word Anteil.
Folgendes Diagramm müsste den Zusammenhang die klarmachen:
Quelltext
1: 2: 3:
| |********************************| lparam = 32-Bit |**************** | HiWord 32 Bit = 16Bit | ****************| LoWord 32Bit = 16Bit |
Am einfachsten fügt man einen Integer Wert ein (X) und dann einem um 16 bit nach Links verschobenen weiteren Integerwert. Richtigerweise müsste man hier noch eine Bereichprüfung da auf 32 BitSystemen ein Integer 32-Bit lang ist und man hier ja nur 16 verwendet, wenn man die Werte selber Einträgt, kann man getrost darauf Verzichten.
Desweiteren musst du beachten, dass man 2 Nachrichten versenden muss, wenn man in Delphi einen OnClick Ereignis simulieren will. Eine, dass der Button gedrückt wurde, die anderen, dass der losgelassen wurde. In VC++ hingegen benutzt man meistens entweder nur WM_LBUTTONUP oder nur WM_LBUTTONDOWN, man kann aber auch beide verwenden. Welche Variante der Programierer implementiert dort seine Entscheidung, also musst du ausprobieren, ob der Button auf Down bzw. Up oder auf beides reagiert. Im Zweifelsfall einfach beides schicken.
Um auf der Position (1/10) des Formulars zu clicken kann man folgende Zeilen benutzen:
Quelltext
1: 2: 3: 4:
| BEGIN Sendmessage(Form1.Handle,WM_LBUTTONDOWN,MK_CONTROL,1+(10 shl 16)); Sendmessage(Form1.Handle,WM_LBUTTONUP,MK_CONTROL,1 + (10 shl 16)); END; |
SMI