Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VC++ nachträgliche MinimizeBox

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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

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.

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?

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

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

@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

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]

@ 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

Danke für Deine Antwort Klotzkopp, ich denke damit komme ich klar.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.