Entwickler-Ecke

Dateizugriff - Flag aus DLL an Hauptprogramm senden


Mike_C - Mi 10.09.03 12:20
Titel: Flag aus DLL an Hauptprogramm senden
Hi Leute!

Ich möchte für ein Programm einen Dialog zum Einstellen von bestimmten Optionen in eine DLL verpacken. Wenn dieser Dialog geschlossen wird, will ich ein Flag setzten und der Hauptanwendung mitteilen, dass das Flag gesetzt wurde, dass bestimmte Folgeaktionen vom Hauptprogramm ausgeführt werden können. Das Flag soll dem Hauptprogramm in meinem Fall sagen: "Pass auf, hier gibt's ne INI-Datei, die du lesen musst und aus der du dir Informationen holen musst um weiter zu machen."
Wie kann ich das realisieren?


:mrgreen:


MSCH - Mi 10.09.03 16:50

via Send/Postmessage() an die Hauptanwendung.
grez
msch


Mike_C - Mi 10.09.03 17:55

Noch ne Frage:
GetActiveWindow liefert mir ja das aktive Fenster als Handle zurück. Funktioniert das auch bei MDI-Applikationen?

und nocheine zu Sendmessage:
kann ich auch irgendwie nen string an die hauptanwendung schicken?


MSCH - Mi 10.09.03 18:15

ob getactiveWindow() funzt weiss ich nicht, aber du kannst den Fenstern doch das Parent-Handle mitgeben, überschreibst einfach den Create() Konstruktor und erweiterst diesen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
const
 wm_sendMail = wm_user +1;
type
  TMDIClient = class(TForm)
  private
    { Private-Deklarationen }
    MasterWindow:Hwnd;
  public
    { Public-Deklarationen }
    constructor Create(AOwner:TComponent;AMasterWindow:Hwnd);reintroduce;
    procedure WMSendMail(var Msg:TMessage);Message wm_SendMail;
  end;


constructor TMDIClient.Create;
begin
  Inherited Create(Aowner);
  MasterWIndow:= AMasterWindow;
end;


procedure TMDIClient.WMPrintItem(var Msg: TMessage);
begin
  PostMessage(MasterWindow,wm_sendmail,0,0);
end;


und in deiner MainForm

Delphi-Quelltext
1:
2:
3:
... 
TMDIClient.Create(self,Self.Handle);
...


Strings kannst du auch versenden, allerdings nicht direkt, sondern nur den Zeiger in lParam einer Message.

grez
msch


Mike_C - Mi 10.09.03 20:41

thx, ich werd's ma probieren...
:mrgreen:


Mike_C - Do 11.09.03 14:12

Gibt's eigentlich eine bestimmte stelle im programm, wo messages abgefangen werden?


MSCH - Do 11.09.03 19:27

wie? abfangen?

erklär mal genauer.
grez
msch


Mike_C - Do 11.09.03 20:13

naja ich muss ja an irgendeiner stelle vom programm mitbekommen, ob eine nachricht gesendet wurde oder nicht. das nennt man im allgemeinen "abfangen von nachrichten" - wenn ich mich nicht irre :)