WS_MAXIMIZEBOX deaktiviert!!!
-
Hallo aller Seits,
Ich habe ein MDI Programm was ich am Anfang maximiert zeigen lasse; dafür habe ich folgendes im PROGRAMM.cpp geschreiben unter ::InitInstance():pFrame->ShowWindow(SW_MAXIMIZE); pFrame->UpdateWindow();Nun wollte ich das maximieren deaktivieren damit man das Fenster nicht verkleinern kann; dafür habe ich im MainFrm.cpp unter ::PreCreateWindow(CREATESTRUCT& cs) folgendes geschriben:
cs.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;Nun zeigt sich das Fenster maximiert, man kann auch nicht verkleinern(soweit alles richtig), aber es stört mich dass man das Fenster jetzt frei bewegen kann und außerdem deckt das Fenster die Taskleiste.

Was kann ich dagegen machen???
Schon mal danke im voraus...
-
Kann mir keiner helfen?
-
Machst du das Maximieren mit ShowWindow(SW_SHOWMAXIMIZED)?
-
Oben steht wie ich es mache, aber ich habe auch schon mit SW_SHOWMAXIMIZED versucht und es kommt das gleiche Effekt!!!
-
Ich habe das mit SW_SHOWMAXIMIZED gemacht und nochmal ausprobiert - geht einwandfrei! Das Fenster ist maximiert und verhält sich, wie man es von einem maximierten Fenster erwartet...
*schulterzuck*
-
Kannst du mal posten was du gemacht hast??? Wäre echt nett...

Ansonsten, könnte das an Windows XP liegen?
-
Also, ich hab hier 2000, das sollte aber eigentlich nicht das Problem sein. Würde in der MSDN stehen, wenn nicht geht.
Also, hier kommt der Teil aus InitInstance:
// Haupt-MDI-Rahmenfenster erzeugen CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Befehlszeile parsen, um zu prüfen auf Standard-Umgebungsbefehle DDE, Datei offen CCommandLineInfo cmdInfo; // ParseCommandLine(cmdInfo); // Verteilung der in der Befehlszeile angegebenen Befehle if (!ProcessShellCommand(cmdInfo)) return FALSE; pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); // Das Hauptfenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden. pMainFrame->UpdateWindow(); return TRUE;Und hier der Teil aus dem MainFrame (PreCreateWindow):
// Die Größe darf nicht änderbar sein. Daher kein Maximieren oder WS_THICKFRAME cs.style = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;Das sollte alles sein.

-
Ich verstehe die Welt nicht mehr!!!

Ich habe EXAKT das gleiche hier stehen und sowhl hier unter Win XP als auch nebenan unter Win 98 ist das Programm über die Taskleiste und lässt sich bewegen!!!
Kann es was anderes liegen???
Noch was, wenn ich oben doppelklicke verkleinert sich das Fenster trotzdem.Kann ich das unterbinden?
Danke für die Bemühungen...
-
Mach bitte mal ein neues Projekt und übertrage den Code. Dann siehst du, ob du den Fehler im System oder im Quellcode suchen musst.
Irgendwann letzte Woche habe ich jemandem hier beschrieben, wie man ein Programm ohne Titelzeile verschieben kann - aus dem Code kannst du ablesen, wie du dem Programm verschaukelst, dass die Titelzeile nicht getroffen wurde. Damit wäre das Problem mit verschieben und dem Doppelklick gelöst. NC_HITTEST oder so ähnlich hies das.
Und das mit der Größe kannst du über eine manuelle Größenzuordnung lösen. Das war was mit SPI_GETWORKAREA oder so. Guck mal danach. Wenn du nix findest such ich nochmal.

-
Danke erstmal

Ich bin gerade von der Schule gekommen und befinde mich auf der Arbeit...
Ich werde mir das anschauen und sage dann Bescheid ob es geklappt hat oder nicht...MfG
Samuel
-
Der Fehler muss im System liegen...
Ich habe ein neues Projekt gestartet, nur die zwei Zeilen Code kopiert, d.hpFrame->ShowWindow(SW_MAXIMIZE); pFrame->UpdateWindow();und
cs.style = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;und es kommt genau das gleiche Effekt...
Ich werde mich allerdings mit "HTCAPTION" und "OnNcHitTest" beschäftigen...
Ich glaube das Problem kann ich vielleicht damit lösen...