Registerkarte

masa

Grünschnabel
hallo,
bin zimlich neu in VC++ :-( .

mein prob :

ich will ein einfache anwendung ( dialogbaisierend ) erstellen,
und über den ganzen dialog eine Regiesterkarte ziehen, mit 3-5 Tabs.
so das dem user in jedem dieser Tabs mehrere funktionen zu verfühgung stehen.
ich kann nicht einmal die bezeichnung "Tab 1 " "Tab 2" ändern ?

zb unter Tab1 ist button1 , Tab 2 button2 ,..., wie ist das zu realisieren .


Danke im vorraus
mfg
masa
 
Das ist leider recht kompliziert, aus irgendeinem Grund kann man Tabs nicht einfach im Dialog-Editor zusammenbasteln (ja, ok, es wäre recht unübersichtlich).

Du musst leider die einzelnen Tabs einzeln bauen, also eine neue Dialog-Ressource anlegen. Der Name des Dialogs wird dann auch der Name des Tabs.
Wenn du dann zu der Ressource eine C-Klasse anlegen lässt (über den Wizard), dann wähle als Basisklasse nicht CDialog sondert CPropertyPage.

An der Stelle, wo du den Dialog aufrufen willst, fügst du folgenden Code ein:

Code:
  CPropertySheet    sheet( "Titel des HauptDialoges" );

  // die einzelnen Propertypages, die angezeigt werden sollen
  CPropPageGrafik        ppGrafik;
  CPropPageSound         ppSound;
  CPropPageHinz          ppKunz;

  // dann die einzelnen Tabs ins Sheet einfügen
  sheet.AddPage( &ppGrafik );
  sheet.AddPage( &ppSound );
  sheet.AddPage( &ppKunz );

  // und aufrufen
  sheet.DoModal();
 
Danke @Endurion

es brachte mich weiter ;-)


habe noch eine frage bezüglich der CPropertyPage klasse, nach deiner anleitung,
werden meine einzelne Dialoge in ein "haupt" dialog eingebaut .

und dieser haupt dialog kann von mir nicht editiert werden
dieser besitzt bereits 4 buttons ( OK, Abrechen, Übernehmen, Hilfe ),

die Frage:



  1. kann ich buttons löschen ?
  2. wie kann dem Hauptdialog Nachrichten zuweisen zb wenn der Ok button gedrückt wurde
 
Man kann die Buttons beeinflussen.

Der CPropertySheet hat ein Member m_psh. Dieses ist ein Struct und enthält unter anderem Flags für die Buttons oder welches Tab am Anfang gezeigt werden soll.

Beispiel (kein Übernehmen-Button)
m_psh.dwFlags |= PSH_NOAPPLYNOW;

Wenn du den Standardbuttons vom Sheet Funktionen zuweisen willst, musst du eine eigene MFC-Klasse von CPropertySheet ableiten. Dort kannst du dann OnOK, OnCancel usw. überschreiben lassen.

Noch ein Hinweis:
Wenn OK oder Übernehmen gedrückt wird, bekommen alle PropertyPages OnApply aufgerufen. Dort kann man dann geänderte Optionen tatsächlich übernehmen.
 
hallo Endurion

nochmal Danke für deine Hilfe !


den "überneme" habe ich weg :
Code:
     	mySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;

aber der Hilfe button stört mich noch :-(

welcher angeblich mit dem code weg sein soll

Code:
     	 mySheet.m_psh.dwFlags &= ~(PSH_HASHELP);
was aber nicht geht, und ich finde in der MSDN keine beispiele

weist du wie ich den wegkriege ?

danke im vorraus



mfg
masa
 
Zuletzt bearbeitet:
Der hasHelp-Style ist ein toller Gag.
Man beachte, dass alle PropertyPages ebenfalls ein Struct haben (m_psp, das Flag heisst da PSP_HASHELP). Der Hilfe-Button geht nur weg, wenn das Flag bei ALLEN Pages und dem Sheet weg ist. Gut, gell?
 
hier die Zusammenfassung ;-)

danke an Endurion.


Code:
   CPropertySheet	sheet( "Titel des Dialogs" ); 
   
   /* die einzelnen Propertypages, die angezeigt
        	werden sollen    CPropPageDialog1 ist ein dialog 
        	der von der Klasse CPropertyPage abgeleitet ist . */
   
   CPropPageDialog1 ppDialog1; 
   CPropPageDialog2 ppDialog2;
  
   sheet.AddPage( &ppDialog1); // die einzelnen Tabs
   sheet.AddPage( &ppDialog2);  // ins Sheet einfügen 
   
   		 /* Hilfe button deaktivieren */
   ppDialog1.m_psp.dwFlags &= ~PSP_HASHELP;
   ppDialog2.m_psp.dwFlags &= ~PSP_HASHELP;
   	 
   
   /* Hilfe button wird entfernet wenn es in JEDEM einzelnen
   CPropertyPage dialog  deaktiviert wurde (siehe oben)*/
   
   sheet.m_psh.dwFlags &= ~(PSH_HASHELP); 
                              	  
                     	// übernehme button entfernen
   sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW ;
   
   sheet.DoModal(); // aufrufen
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück