| |
|
|
H.Brill | Hallo, Weiß jemand, was es mit den Windowsproceduren auf sich hat, bzw. welche von Set("WinProc", N%) dann aufgerufen wird ?
Wie das Fenster erzeugt wurde (CLS, Window(...), Create() ), scheint wohl egal zu sein. Alle 4 Systemvariablen zeigen eine (gültige ?) Procedur - Adresse an.
Vielleicht hat ja schon jemand damit experimentiert bzw. kann mir mehr Info geben. Besonders interessant wäre, was man damit alles machen kann (evtl. Umlenken der winproc usw.) Oder wie geht das mit einer ext. DLL mit Fenstern, auf die XProfan dann reagieren soll ? Wäre ja auch interessant mit Objekten, die mit @CONTROL erzeugt wurden.
Irgendwas muß sich Roland ja dabei gedacht haben. Sonst hätte er sie nicht eingebaut. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 22.04.2021 ▲ |
|
|
|
|
Michael W. | Die Antwort ist im Subclassing zu finden.
Innerhalb der SubclassProc ist der einzige Ort wo Set("WinProc",...) Sinn macht.
In der SubClassProc behandelst du ja deine Messages, die du umsteuern möchtest. Wenn du alles erledigt hast, dann wird Windows mit Set("WinProc",0) darauf aufmerksam gemacht, das du schon alles zu dieser Message erledigt hast.
Wenn Du allerdings Set("WinProc",1) aufrufst, dann kümmert sich Windows auch noch einmal um die Message.
Ein Beispiel: Du fängst das Schliessen eines Fensters ab und erledigst noch einige Sachen. Wenn Du dann das Weiterreichen zuläßt, dann wird das Fester anschließend geschlossen, sonst nicht. (Trotzdem sollte man sich USER-Abfragen, die ja lange dauern können, in einer SubClassProc verkneifen.) |
|
|
| |
|
|
|
H.Brill | Mit dem SubClassing habe ich auch schon gearbeitet. Mir ging es eher um die Systemvariablen
Die finden beim Thema SubClassing keine Erwähnung. Da steht nur für fortgeschrittene Anwender.
Vielleicht kann man da gewisse API-Funktionen, die eine solche Windowsprozedur-Adresse benötigen, bedienen. Da wären ein paar Beispiele und Erklärung hilfreich. Welche Prozedur bei welcher API Verwendung findet. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 29.04.2021 ▲ |
|
|
|
|
Jens-Arne Reumschüssel | Guck Dir mal in der XProfan-Hilfe folgendes Beispiel an (zu erreichen über das Stichwort "Callback" in der Hilfe):
Listing: Callback (Textfeldfarbe)
Die darin enthaltene Zeile
OldWndProc& = ~GetWindowLong(%hWnd, ~GWL_WNDPROC)
ermittelt da im Prinzip die Adresse von &WinProc. Zum Beispiel das, was in diesem Hilfeabschnitt steht, kann man damit machen. Aber über die Subclassproc geht es meistens einfacher, als darüber, die Window-Prozedur manuell umzuleiten. Selten geht es aber so doch besser, weil das Subclassing von XProfan manche Messages verschluckt.
Beste Grüße, Jens-Arne |
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 05.05.2021 ▲ |
|
|
|