Dialogfeld initialisieren

buschke

Mitglied
Hallo,
ich habe ein paar fragen zu Dialogfeldern. DAs Dialogfeld soll, wenn es aufgerufen wird, einen Titel bekommen. Außerdem soll die Größe des Dialogfeldes erst im Programm berechnet werden, da ich eine Zeichnung hineinsetzen möchte, von der ich die Größe zu Beginn des Programms nicht kenne. Zusätzlich soll das dann berechnete Dialogfeld in der Mitte des Bildschirms liegen. Kann mir jemand helfen?
Für den Titel habe ich
SetWindowText(title) ;
benutzt in der OnInitDialog() aber es ist nichts passiert. :confused:

buschke
 
für den titel des Dialoges versuch mal:
Code:
::SHSetNavBarText(AfxGetMainWnd()->GetSafeHwnd(),L"Fenstertitel");
für größe und position des dialoges:
Code:
RECT rc;
GetWindowRect(&rc);

SetWindowPos(&CWnd::wndTopMost,rc.left, rc.top, rc.right, rc.bottom, SWP_SHOWWINDOW   );
alles im InitDialog des Dialoges! ;-)
dieses must du aber wahrscheinlich noch für deine Bedürfnisse anpassen!

Hoffe konnte dir helfen!

Sven
 
Specialguest@home hat gesagt.:
für den titel des Dialoges versuch mal:
Code:
::SHSetNavBarText(AfxGetMainWnd()->GetSafeHwnd(),L"Fenstertitel");

Das gibt's nur für Windows CE.

SetWindowText ist eigentlich genau richtig. Gibt es eventuell andere Funktionen, die den Text später ändern? Ist das ein ganz normaler Dialog oder irgendein eingesetzter Child-Dialog?


Dialog zentrieren:

In MFC gibt es eine Member-Funktion namens CenterWindow. Zentriert auf Parent oder Desktop, alternativ auf das übergebene Fenster.

Grösse des Dialogs anpassen:

Sollte dann vor dem Aufruf von CenterWindow passieren, funktioniert wie bereits von SpecialGuest gezeigt mit SetWindowPos.
 
Hi buschke,

SetWindowText("bla bla ..") müsste eigendlich funktionieren.
Vieleicht liegt dein Fehler irgendwo anders?

Mfg Col.Blake
 
jau, hat jetzt auch funktioniert mit SetWindowText. Danke dafür!
Leider kommt jetzt gleich die nächste Frage: Im Dialog ist eine Zeichnung, die ich in der OnPaint()-Routine gemacht habe. Beim Klicken auf einen Button soll die Zeichnung neu gemacht werden, deshalb rufe ich die OnPaint()-Routine in der OnButton1() auf. Leider erscheint die neue Zeichnung nicht auf dem Bildschirm. Die OnPaint()-Routine wird zwar aufgerufen, aber die Zeichnung wird nicht sichtbar. Was muß ich dafür tun?
 
Das OnPaint nicht direkt aufrufen, sondern einfach nur Invalidate(). Dadurch wird dann intern das OnPaint aufgerufen, allerdings mit korrektem Ablauf.
 

Neue Beiträge

Zurück