Welche Klasse muss ich verwenden, um einen Dialog/ein Fenster mittels Control() zu erzeugen?
Hintergrund: Ich möchte ein Dialogfenster erzeugen, dass aber unsichtbar ist. Mit Create("Dialog"+ShowWindow() flackert es kurz auf, das ist sehr unschön. Mir ist klar, dass ich es auch außerhalb des Sichtbereichs erstellen könnte, aber das ist doch sehr unschön. Mit dem richtigen Style ist es viel eleganter. Leider fehlt mir die Klasse dazu...ClassOf() spuckt "#32770" aus, das funktioniert mit Control() aber nicht.
Welche Klasse um einen Dialog/ein Fenster mittels Control() zu erzeugen?
-
-
-
Keinne Idee? Stand noch niemand vor dem Problem??? Ist es möglich einen unsichtbaren Dialog als Resource einzubauen?
-
Dieser Klassenbezeichner funktioniert soweit. Aber:
Es geht nur mit ws_Child, der erzeugte Teil kann sich also nur innerhalb des Elternfensters befinden
Es scheint gar keine Fensterfunktion dazu aktiv zu sein, zumindest Rückgabewerte von %MenuItem, %Key und %ScanKey liefern immer 0Code
Alles anzeigenCLS Declare Handle Dialog Dialog = Control("#32770", "Mein Dialog", $40C80080, 96, 124, 228, 96, %HWnd, 1000, %HInstance, $301) Print Str$(Dialog) If Dialog <> 0 Print "Sichtbarmachen mit Klick" WaitInput ShowWindow(Dialog, 1) Else Print "Dialog wurde nicht erstellt" EndIf While 1 WaitInput If GetActiveWindow(Dialog) Print %MenuItem; Print %Key; Print %ScanKey Else Case %Key = 2 : Break EndIf EndWhile
Einen unsichtbaren Dialog als Ressource hinzufügen wird nicht gehen. Ressourcen sind überlicherweise immer unsichtbar, sie haben den Stil ws_visible nicht. Der wird entweder beim Erstellen des Fensters hinzugegeben oder später durch ShowWindow gesetzt. Profan setzt den leider zwangsweise immer, wenn etwas erstellt wird. Wäre vielleicht eine Anregung für Roland, für alle Create-Funktionen eine optionales "Unsichtbarkeitsflag" einzubauen.
Gruß Volkmar
-
Das ist seltsam, die Styles und ExtStyles hab ich aus einem normalen Dialog mittels GetStyle ausgelesen. Ich bin davon ausgegangen, dass das dann klappt.
-
Es wäre eventuell noch eine Möglichkeit, eine wndClass-Struktur zu erzeugen und mittels der API RegisterClass für die Klasse "#32770" eine Klassenregistrierung durchzuführen. Profan stellt ja die dazu notwendige Adresse der Dialogfensterfunktion in der Systemvariablen &DlgProc bereit. Vielleicht könnte man damit was erreichen.
Gruß Volkmar
-
Das ist sehr kompliziert...vielleicht weiß Roland was einfacheres.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!