Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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".

Geschrieben

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

Geschrieben

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

Geschrieben

Bin zwar nicht Klotzkopf, aber egal...:D


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.

Geschrieben

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?

Geschrieben

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 :D

Gruß

KK

Geschrieben

Wenn ich das jetzt richtig verstehe, liegt dein PropertySheet innerhalb eines Vaterfensters? Wenn ja, dann gehört der Code in das Vaterfenster! :beagolisc

Geschrieben

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

Geschrieben

@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

Geschrieben

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]

Geschrieben

@ 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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...