Dialog unsichtbar starten
-
hi@all,
will mein programm auf 2 verschieden arten starten können sichtbar und unsichtbar
sichtbar -> kein thema
unsichtbar -> wenn ich ShowWindow(SW_HIDE) in der OnPaint() des Dialogs aufrufe blitzt mein programm kurz auf, kann mann das irgenwie unterdrücken??
oder kann man den style der programmes von VISIBLE in INVISIBLE umwandeln, wenn ja wie??
oder kann man den dialog beim aufruf dlg.DoModal() iregendwelche parameter übergeben das er unsichtbar beleibt
hab hier schon im ganzen forum nachgeguckt leider nix gefunden irgenwelche verweise auf die WinAPI sind nicht so toll weil ich ja mit MFC programmiere ausser man kann mit API-Funktionen den style irgendwie verändern dann wäre es net nicht nur auf die WinAPI zu verweisen sonder ggf den link gleich dazuzupacken.
thx im voraus
tracer
-
-> FAQ
-
Also modale Dialoge unsichtbar halten? Das ist nicht eine gute Idee! Was hat das ganze für nen Sinn? Dann kannst du ihn ja auch gleich später erstellen?
-
hi
@Nemesyzz-> Wo in dere FAQ?? hab sie schon komplett durchsucht aber nix gefunden
@<>-> der SINN ist das man das programm aufrufen kann mit einem taskplaner und da solles halt automatisch ablaufen und nicht angezeigt werden und nur wenn mann das programm neu konfigurieren und manuel starten will braucht man einen dialog
mfg
tracer
-
Ok, dann brauchst du aber keinen modalen Dialog! Nimm einen nichtmodalen!
-
Kannst ja mal probieren, ob es was bringt, wenn Du PreCreateWindow überschreibst und das WS_VISIBLE-Flag weglöschst!
-
Das geht aber nur bei nichtmodalen mit WS_VISIBLE weglöschen!
-
thx
werds mal mit einem nichtmodalen dialog probieren
tracer
-
Möchte zu gerne wissen, welcher Forum-User sich mit meinem Login identifiziert!
-
ich! wenn du möchtest kann ich es auch lassen, musst es nur sagen. ich heisse zufällig auch RenéG - René Granich
-
Hallo,
ich hatte das Problem auch (bei nichtmodalen Dialogen) und habe nach langem Suchen das folgende gefunden:
Fang die WM_WINDOWPOSCHANGING Message ab und füge den folgenden Code ein:void CDialogxxx::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) /* SPECIFICATION: Windows Message, wenn WindowPosition sich ändert. Die Funktion wird verwendet, um zu nach dem Kreieren des Objekts das Window nicht anzuzeigen */ { CDialog::OnWindowPosChanging(lpwndpos); if ( lpwndpos->flags & SWP_SHOWWINDOW ) { if ( m_bFirstShowWindow ) { m_bFirstShowWindow = false; lpwndpos->flags &= ~SWP_SHOWWINDOW; } } }
Die Memeber-Variable: m_bFirstShowWindow ist zu Beginn auf true gesetzt.
-
Original erstellt von tracer:
**hi
@Nemesyzz-> Wo in dere FAQ?? hab sie schon komplett durchsucht aber nix gefunden
**Glaub ich nicht!
Seite 2: Dialogbasierend: Unsichtbar starten