Kampfkartoffel Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Hallo, ich habe ein Projekt erstellt und vergessen im VisualStudio die MinimierenBox zu aktivieren. Nun frage ich mich, wie man das codetechnisch nachschreiben kann. Oder anders, weiss jemand wo diese Information beim Erzeugen des Projektes hingeschrieben wird? Meine erste Idee war, die MinimierenBox genauso zu aktivieren, wie ich bei einem PropertySheet in einem anderen Projekt die Buttons des Sheets deaktiviert habe. Ich habe aber keine Ahnung über welche ID ich die MinimizeBox "packen" kann. Danke im Voraus KK Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 ein ProjektWelche Art Projekt? im VisualStudioWelches VS (Nummer, Edition, Sprache)? Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 Hallo Klotzkopp, danke für die schnelle Antwort. Ich arbeite mit dem VisualStudio 2003 VC++.net. Meine jetzige Anwendung ist ein normales dialogbasierendes Projekt. Ich möchte dasselbe jedoch auch bei meinem PropertySheet-Projekt anwenden. Ich hoffe das beantwortet Deine Fragen. Gruß KK Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Ich arbeite mit dem VisualStudio 2003 VC++.net.Das ist zwar nur eines der drei (Nummer, Edition, Sprache), aber sollte reichen Die Minimieren-Schaltfläche kannst du einfach in den Eigenschaften der Dialogressource wieder aktivieren. Wie die Eigenschaft genau heißt, hängt von der Sprachversion ab. In der englischen Version heißt sie "Minimize Box". Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 Oh Mann, es geht zu Ende mit mir. Das kann jawohl nicht wahr sein. Da such ich und mach und tue und dann ist das ganze so einfach. Danke Klotzkopp, aber Du hättest Dir zumindest was Komplizierteres ausdenken können, um ein bisschen so zu tun als ob das ne große Sache wäre. Nochmal Danke und Gruß KK Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 Ich habe das gerade bei meinem PropertySheet ausprobiert und da macht er es nicht. Wie kann ich denn meinem PropertySheet sagen, das er eine MinimizeBox einfügen soll? Sie ist ja kein Dialog mit Oberfläche. Gruß und vorzeitiger Dank KK Zitieren
Hexagon Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Bin zwar nicht Klotzkopf, aber egal... BOOL YourPropSheet::PreCreateWindow(CREATESTRUCT &cs) { // Minimize-Button rein... cs.style |= WS_MINIMIZEBOX; if( !DeineBasisKlasse::PreCreateWindow(cs) ) return FALSE; return TRUE; } Rein theoretisch sollte das klappen. Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Dein PropertySheet ist doch sicher Kind eines anderen Fensters, oder? Kindfenster, die üblicherweise keinen Taskbarbutton haben, haben auch keine Schaltfläche zum Minimieren, wenn man mal von Framedokumenten absieht. Aber die sind selten Propertysheets. Wohin sollte es denn auch minimiert werden? Oder wie sollte man es wiederherstellen, wenn es minimiert wurde? Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 Hallo @ Hexagon: Danke für die Antwort,ich habe den Code integriert, er gibt keinen Fehler aus, zeichnet aber keine MinimizeBox ein. Mein Code: BOOL CParentSheet::PreCreateWindow(CREATESTRUCT &cs) { // Minimize-Button rein... cs.style |= WS_MINIMIZEBOX; if( !CPropertySheet::PreCreateWindow(cs) ) return FALSE; return TRUE; } @ Klotzkopp: Mein PropertySheet ist das Kind von der Hauptklasse. Da auf dem PropertySheet unten Buttons wie "Übernehmen" usw. auftauchen, dachte ich mir, dass man doch sicher oben auf der selben Zeichenebene die MinimizeBox setzen kann. Ich habe bisher einen eigenen Button geschrieben, den ich codemäßig nach oben rechts zeichne und der dann die Minimize-Funktion ausführt. Das sieht aber irgendwie amateurhaft aus. Ich bin zwar einer, aber das soll ja nicht jeder direkt sehen Gruß KK Zitieren
Hexagon Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Wenn ich das jetzt richtig verstehe, liegt dein PropertySheet innerhalb eines Vaterfensters? Wenn ja, dann gehört der Code in das Vaterfenster! :beagolisc Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Mein PropertySheet ist das Kind von der Hauptklasse. Hat das PropertySheet einen Taskbar-Button? Falls nicht, wohin soll es minimiert werden? Minimieren ist nicht für jede Art Fenster sinnvoll. Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 Hi Hexagon, ja das macht Sinn. Ich habe den Code in mein Vaterfenster gesetzt. Die Basisklasse meines Vaterfensters ist CWinApp. Der Compiler sagt mir jedoch, dass PreCreateWindow kein Element von dieser Basisklasse ist. Noch mal zur Erklärung: Ich initialisiere in meinen Hauptprogramm (Programm.cpp) die PropertySheetklasse und adde Pages. Dann gehe ich über DoModal in das PropertySheet-Fenster rein. Gruß KK Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 @Klotzkopp, bei dem Button, den ich auf die Ebene des Propertysheet gezeichnet habe und der das Minimieren codemäßig macht, über: SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); minimiert sich mein Programm in die Taskleiste. Daher muss es doch möglich sein diese Funktion über eine MinizeBox zu ersetzen, oder? Gruß KK Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 CWinApp ist keine Fensterklasse. Ich vermute, dein PropertySheet hat gar kein Elternfenster. Oder sieht man eins? Es wäre auch ziemlich sinnlos, einen modalen Kinddialog zu minimieren, da man, während der Dialog offen ist, sowieso nichts mit dem Elternfenster machen kann. Überschreib OnInitDialog in deiner Sheet-Klasse. Dort kannst du mit ModifyStyle die Minimieren-Schaltfläche hinzufügen: ModifyStyle( 0, WS_MINIMIZEBOX, 0 ); [/code] Zitieren
Kampfkartoffel Geschrieben 17. Juli 2006 Autor Geschrieben 17. Juli 2006 @ Klotzkopp, es sieht in der Tat so aus, als ob mein PropertySheet mein erstes Fenster ist. Die MinimizeBox zeigt er nun auch an. Danke dafür. Nur die Funktion macht er nicht, muss ich die über einen Handle selber schreiben? Gruß KK Zitieren
Klotzkopp Geschrieben 17. Juli 2006 Geschrieben 17. Juli 2006 Hier scheint jemand eine Lösung für dieses Problem gefunden zu haben. Zitieren
Kampfkartoffel Geschrieben 18. Juli 2006 Autor Geschrieben 18. Juli 2006 Danke für Deine Antwort Klotzkopp, ich denke damit komme ich klar. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.