Seite 1 von 2
SendMessage_() - Parameter?
Verfasst: 20.07.2006 21:56
von AND51
Hallo!
Kann mir bitte einer erklären, was wParam und lParam bei
SendMessage_() bedeuten?
Ich möchte gern meinem eigenen Fenster vorgaukeln, ein Button währe ausgeführt worden. Wofür genau stehen wParam und lParam? "for additional information" reicht mir nicht...
Code: Alles auswählen
SendMessage_(WindowID(#fenster), #PB_Event_Gadget, GadgetID(#e_ausfuehren), 0)
funktioniert nicht...
Verfasst: 20.07.2006 22:40
von Kaeru Gaman
wParam isn Word, lParam isn Long...
hat mit windows zu tun, nicht mit PB.
in der MSDN wird das ausführlich erklärt.
Re: SendMessage_() - Parameter?
Verfasst: 20.07.2006 23:15
von Kiffi
> Ich möchte gern meinem eigenen Fenster vorgaukeln, ein Button währe
> ausgeführt worden.
Du möchtest
Deinem eigenen Programm das vorgaukeln? Ich verstehe jetzt nicht
ganz den Sinn. Wieso führst Du dann nicht einfach den Code aus, der
aufgerufen wird, wenn Du den Button drückst?
Wenn Du den Button einer fremden Applikation drücken möchtest, kann Dir
folgender Code von edel weiterhelfen:
http://www.purebasic.fr/german/viewtopic.php?t=6224
Grüße ... Kiffi
Verfasst: 20.07.2006 23:16
von Green Snake
wParam ist aber auch ein Long
Über die Parameter werden, wie gesagt, erewiterte Infos ausgetauscht. ZB die Position des Fensters, wo ein Mausklick stattfand etc.
Manchmal ist lParam auch der Pointer zu einer Struktur mit noch mehr Infos.
Am besten mal damit rumspielen, macht irgendwie noch Spass
[Edit]
OK, wParam war früher mal ein Word^^
Verfasst: 20.07.2006 23:27
von AND51
MSDN hat geschrieben:hWnd
[in] Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Msg
[in] Specifies the message to be sent.
wParam
[in] Specifies additional message-specific information.
lParam
[in] Specifies additional message-specific information.
zu wParam und lParam: Das nennst du ausführlich, Kaeru? Außerdem schirbe ich ja schon, das mir "for additional information" nicht viel sagt.
@ Green Snake: Ich habe damit schon rumgespielt, immer wieder die Werte von einem selbsterstellen Callback debuggen lassen, etc. Da ist mir der Spaß vergangen...
@ Kiffi: Ja, so ist es. Ich möchte nicht schon wieder Goto benutzen, auch wenn 1 Goto mehr oder weniger in meinem Programm keinen Unterschied mehr macht. Ich habe eine Hauptschleife, und Frage mittels Select ab, welches gadget betätigt wurde und müsste dementsprechend einspringen.
Auch in eine Procedure möchte ich das nicht unbedingt packen.
Mit
SendMessage_(), dachte ich mir, könnte ich es auch anders und (vor allem) eleganter machen.
Verfasst: 20.07.2006 23:32
von Kiffi
> @ Kiffi: Ja, so ist es.
dann vergiss das mit dem SendMessage_() mal wieder ganz schnell!
> Ich möchte nicht schon wieder Goto benutzen
dann mach 'ne Prozedur daraus. Schmeiss bei der Gelegenheit alle GOTOs
aus Deinem Code raus.
> Auch in eine Procedure möchte ich das nicht unbedingt packen.
na, dann kann ich Dir auch nicht weiterhelfen. SendMessage_() ist auf jeden
Fall der falsche Weg.
Grüße ... Kiffi
Verfasst: 20.07.2006 23:36
von AND51
Achso. OK, wenn es nicht anders geht, dann vergesse ich es, da kann man nichts machen. Das sehe ich ein
Aber warum geht das denn nicht, kannst du mir das vielleicht erklären?
Und gibt es wirklich keinen anderen Weg? Ich will jetzt nicht betteln, dass jemand mir etwas ordentliches vorkaut oder so, ich will das größenteils schon selbermachen.
SendMessage habe ich nur noch nie benutzt, ich dachte, daraus könne was werden.
OK, dann werde ich mal aberwägen, ob ich GOTO oder PROCEDURE nehme, danke für eure Hilfe

Verfasst: 20.07.2006 23:41
von Kiffi
> Achso. OK, wenn es nicht anders geht, dann vergesse ich es, da kann man
> nichts machen. Das sehe ich ein
ich habe nichts davon geschrieben, dass das nicht funktioniert. Ich habe
mit meinem Posting ausdrücken wollen, dass das keine besonders feine
Art ist, zu programmieren.
Rufst Du Deinen Nachbarn an und sagst ihm, er soll bei Dir schellen, weil
Du Deine Haustür öffnen willst?
> SendMessage habe ich nur noch nie benutzt, ich dachte, daraus könne was
> werden.
sieh Dir den Code von edel an.
> OK, dann werde ich mal aberwägen, ob ich GOTO oder PROCEDURE
> nehme, danke für eure Hilfe
nimm Procedure()!
Grüße ... Kiffi
Verfasst: 20.07.2006 23:57
von AND51
Danke!
Ich glaube, ich nehm Procedure, wie du gesagt hast!

Verfasst: 21.07.2006 09:14
von Kaeru Gaman
wenn du einen bestimmten aufruf per Button UND bei einem anderen ereignis machen willst, dann arbeite mit einem (globalen) Flag:
- wenn der Button gedrückt wird, setzt du das Flag
- wenn die andere Bedingung erfüllt ist, setzt du das Flag
das ist das, wo du dein sendmessage machen wolltest
- wenn das flag gesetzt ist, reagierst du drauf, wie du vorher auf den Button reagiert hast
und hier musst du das Flag auch wieder löschen