Wie bekomme ich mein Dialog-Fenster über alle anderen Fenster???
-
Hallo.
Ich erzeuge in meinem MFC-Programm durch einen klick ein Dialogfeld.
Wie kann ich das Dialogfeld dazu bekommen wie der
Taskmanager über allen anderen Fenstern zu liegen?cebion
-
Im Mfc, unterm Arbeitsbereich Registerkarte "Resourcen" den Dialog öffnen
den du dauerhaft in den vordergrund setzen willst.mit der rechten maustaste auf den resourcendialog klicken und Eigenschaften
wählen.Im Dialog Eigenschaften auf die Registerkarte "Weitere Formate" und nen hacken
bei Systemmodal setzen.das wars danach bleibt dein dialog über allen anderen dialogen.
mfg
LowFly
-
SetWindowPos mit wndTopMost
-
Hallo LowFly, das funktioniert. Danke
Ich starte mein Programm und klicke dann mit der linken Maustaste einfach in das entstehende Fenster.
Das Dialogfeld wird erzeuge und angezeigt und bleibt über allen anderen Fenstern auf meinem Bildschirm.
Was mich noch stört ist das wenn ich mein Programm minimiere also in die Taskleiste schicke verschwindet auch mein Dialogfeld.
Erst wenn ich mein Programm wieder aus der Taskleiste hole erscheint auch mein Dialogfeld wieder.
Eigentlich soll das Dialogfeld aber die ganze zeit auf dem Bildschirm bleiben.
Kann man da was machen.Hallo Martin Richter, auch ein Danke.
Ich kann mit „SetWindowPos mit wndTopMost“ aber erst einmal nichts anfangen.
Kannst du mir noch ein paar Informationen zusätzlich geben wie ich das anwende?cebion
-
das was ich mache ist die voreinstellung das was martin dir sagte ist das was du wärend der laufzeit des
programms ändern kannst.das was du vorhast wird nicht gehn jedes dialogfeld reagiert auf den Button in der Taskleiste
es sei denn du schreibst dir eine eigene funktion in der du abfragst ist dein Dialog an der ersten stelle
des Bildschirms. ist er es nicht setze ihn an erster stelle. wäre der ganze zauber.das hat was mit den z positionen bzw. der herachie der Fenster untereinder (z) zu tun.
das ist zb das was Martin dir vorgeschlagen hat. wäre nicht schwehr das zu realisieren.einfach mal in der MSDN unter SetWindowPos nachlesen was da so steht.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/setwindowpos.aspmfg
LowFly
-
Hallo LowFly.
Was soll "das was du vorhast wird nicht gehn jedes dialogfeld reagiert auf den Button in der Taskleiste" heissen.
Habe doch gar nichts von einem Button geschrieben.
Sehe das so.
Das Dialogfeld ist das Kindfenster meiner Anwendeung.
Wenn ich meine Anwendung in die Taskleiste schicke soll das Dialogfeld aber auf dem Bildschirm bleiben.
War in Java kein Problem.cebion
-
da du von der taskleiste geschriebenhast & in der taskleiste programme als button sichtbar sind nam ich das an

wie du schon ganz richtig erkannt hast
Das Dialogfeld ist das Kindfenster meiner Anwendeung
wird das so erst recht nicht gehn da dialog 2 (Kindfenster) durch den hauptdialog mit DoModal geöffnet wird. Als KindFenster zählt und somit vom Elternfenster abhängt.

du kanns höchstens den 2. dialog über create öffnen und nicht über DoModal.
somit ist er nicht ein Kindfenster des Hauptdialogs sondern eigenständig. und du kannst den haupdialog minimieren, ohne das durch den haupdialog erstellte dialoge, vom haupdialog abhängen.LowFly
-
Hallo LowFly.
Habe vergessen zu schreiben das mein Dialogfenster ja nicht modal ist.
Es wird mit Creat erzeugt.In meiner Prog1View.cpp erzeuge ich mit
void Prog1View::OnLButtonDown(UINT nFlags, CPoint point)
{
m_pDlg = new Prog1Dialog(this);
m_pDlg->Create();
}das Dialogfenster bei einem Mausklick.
Folgendes ist in der Dialogklasse
Prog1Dialog::Prog1Dialog(CView* pView) // nichtmodaler Konstruktor
{
m_pView = pView;
}BOOL Prog1Dialog::Create()
{
return CDialog::Create(Prog1Dialog::IDD);
}Trotzdem wird auch mein Dialogfenster minimiert wenn ich das eigentliche Programm minimiere.
Das mus doch auch anders gehen.
cebion