Seite 2 von 2

Verfasst: 17.06.2007 15:37
von ShadowTurtle
Folgendes gibt es nun in der neuen Version (Quellcodes wurden im ersten Beitrag ausgetauscht):

* In Gedanken hatte ich #AdvDlg_Proc_Update benutzt, obwohl eigentlich nur #WM_COMMAND abgefragt wird. Dieser Fehler ist behoben. #AdvDlg_Proc_Update existiert nicht mehr und heißt nun #AdvDlg_Proc_Command .
* Ab jetzt muss man immer vor den Setzen von Events und dem Erstellen eines Dialogs, die Funktion AdvDlg_Init() aufrufen. z.B.

Code: Alles auswählen

    AdvDlg_Init()
    AdvDlg_SetProc( #AdvDlg_Proc_Open, @MyDialog_C_Open() )
    AdvDlg_SetProc( #AdvDlg_Proc_Command, @MyDialog_C_Command() )
    AdvDlg_SetProc( #AdvDlg_Proc_Close, @MyDialog_C_Close() )
    AdvDlg_SetApiProc( #WM_LBUTTONDOWN, @MyDialog_ShowMessageOnClick() )
    *MyDialog_C = AdvDlg_Create( AdvDlg_GethWnd(), 0, 0, 100, 200, "Sample Dialog 3", #WS_POPUP | #WS_BORDER | #WS_SYSMENU | #DS_MODALFRAME | #WS_CAPTION | #DS_CENTER )
* Man kann nun auch WinApi Ereignisse als Events einbinden ( AdvDlg_SetApiProc ). Beispiel (erfahrene wissen es gut zu nutzen ...): AdvDlg_SetApiProc( #WM_LBUTTONDOWN, @MyDialog_ShowMessageOnClick() )


Programie: Gut so. Nun musst Du aber noch folgende dinge umsetzen, damit dein Quellcode auch wirklich aus dem Fenster heraus ein Dialog Simuliert:

* Ein Dialog darf/sollte nicht in der Taskleiste erscheinen.
* Wenn man Alt+Tab drückt, dann tauchen die "Dialog"-Fenster weiterhin in der Fenster-Liste auf. Bitte aus der Liste Entfernen.
* Wenn man sich die Fenster-Liste im Task-Manager anschaut, dann tauchen dort auch die "Dialog"-Fenster auf. Ebenfalls aus der Liste entfernen.
* So lange wie das Hauptfenster (auf dem die anderen Fenster "liegen"), Deaktiviert sind, kann man dieses nicht mehr von der Taskleiste hervorrufen. Man sollte nur das "Haupt"-GadGet (z.B. ein Panel auf dem der Fensterinhalt liegt) Deaktivieren. Das Menü vielleicht auch noch.

Erst wenn Du diese Liste umgesetzt hast, dann ist dein Quellcode auch für Win95 bis hin zu Windows 2000 zu Gebrauchen. Ansonsten gibt es hier und dort kleinere Macken. z.B. bei Alt+Tab nicht sichtbar, aber eben im Taskmanager aufgelistet.

Mal abgesehen davon.. Es gibt Shell-Erweiterungen für Windows. Diese machen da garantiert keine Ausnahme sondern behandeln ein Fenster eben wie ein Fenster und zeigen diese vielleicht einfach so mal in Ihrer Liste. Mir wäre es Peinlich wenn meine Software auf einmal Zwei Fenster in der Taskleiste hätte, obwohl es so tut als wäre es ein Dialog. "War der Entwickler etwas beschränkt als er versuchte ein Dialog zu Simulieren. Warum hat er nicht ein echtes Dialog benutzt?", denkt sich dann vielleicht irgendjemand.

Ich habe selbst schon über einige Pannen von Software nachgedacht. In solchen Punkten sollte man also äußerst Kritisch sein, anstatt immer nur zu versuchen den Problemen oder Umständen aus den Weg zu gehen.

Meine Dialoge werden jedenfalls zu 100% für alle Windows Systeme + Shell Erweiterungen Kompatibel sein. Warum denn auch nicht? Sind ja auch echte Dialoge... In Gegensatz zum Grund deiner Umsetzung ist das doch wirklich Logisch, oder?