[Plugin] Fensterschleifenproblem

So hab ich es mir erst auch gedacht, das Problem:
Es wird definitiv nicht gehen, das vom anfang die DLL sagen kann, weiviele Buttons oder ueberhaut welche Controls benutzt werden werden.

Zum Beispiel ein Zwischenablagenplugin das mehrere in die Zwischwenablage kopierte EInheiten speicher, kann nicht sagen, wie ooft dies geschehen wird. Ausserdem soll dem "Plugin" ja kaum Grenzen gesetzt sein (also wie ein eigenes kleines Programm laufen). Deswegen sollte die ganze Nachrichtenschleife "umgeleitet" werden. Eigentlich funktioniertdas auch ganz gut. SOnst muss ich eben auf die Toolbars verzichten.

Im MOment laueft es so:


Danke fuer die Muehe!
  1. Programm starten
  2. Programm laedt DLL
  3. Programm versuchteine Infofunktion abzufragen, die einen bestimmten Wert uebergeben muss, um als Plugin erkannt zu werden.
  4. List ruft Record ab umd Name Autor, gewuenschtes Fenster, WndProc-Pointer und kleinen Infotext des Plugins zu erfahren.
  5. Daten werden von der Unit verarbeitet und eine neue Fensterklasse erzeugt und der angegebene Funktionspointer wird eingespeisst.
  6. Fenster wird erstellt.
  7. Die DLL kann mit dem Fenster machen was sie will
 
Zuletzt bearbeitet:
Wenn du dermaßen mächtige Plugins ermöglichen willst, könntest du das Nachrichtenproblem auch umgehen, indem du ein regelrechtes Kommunikationsprotokoll "Programm<==>DLL" entwirfst. So könnte eine DLL angeben, dass sie über Änderungen in der Zwischenablage informiert werden will und könnte dann ihrerseits eine Callbackfunktion aufrufen, um so Control-Änderungen durchzugeben.

Gawayn
 
Naja, es geht ja eben darum, dass das, was der Programmierer braucht bzw. haeufig braucht, sich zu einem Plugin programmeiren kann um dann direkt daraus Sourceode fuer seine Programme (?) schreiben ZU LASSEN (z.B Matrizenrechnung fuer Direct3D). Und da haeng ich eben.

Das mit dem Protokoll klingt gut, ist aber glaub ich viel zu aufwendig.
Ich glaub, ich werd mich nochmal uebger SetWIndowLonge rkundigen, ch glaube, da kann man fuer einzelne FEnster im Nachinein den WndProc-Pointer veraendern. Das waer DIE Loesung! Ich meld mich!

//edit:
HA!
Seht hier:
http://msdn.microsoft.com/library/d...erence/windowclassfunctions/setwindowlong.asp
Ich kann anscheinden fuer einzelne Fenster die WinProc aendern. Wenn das geht, (das es also nicht fuer die ganze Klasse gilt), wird alles schoen einfach!
Dann muss ic meine Unit wohl nochmal usmchreiben, aber das lohnt sich!
 
Zuletzt bearbeitet:
Zurück