Menü-Eintäge Text ändern
-
Habe schon wieder 2 Fragen:
- Wie kann man denn im Menü den text der Einträge verändern?
- Wie lässt sich der Titel der Pages in einer TabCtrl verändern?
Habs mit m_psp.pszTitel = "XXX" versucht aber das funktioniert nicht.
-
maRKus23 schrieb:
Habe schon wieder 2 Fragen:
- Wie kann man denn im Menü den text der Einträge verändern?Entweder du hangelst dich durch dein CMenu und seine Kindelemente und änderst die Bezeichnung per ModifyMenu() - oder du nutzt die ON_UPDATE_COMMAND_UI-Mechanismen und passt den Menüpunkt per CCmdUI::SetText() an.
- Wie lässt sich der Titel der Pages in einer TabCtrl verändern?
Ich würde ein TCITEM mit den entsprechenden Infos füllen und an SetItem() übergeben.
-
[quote="CStoll"]
maRKus23 schrieb:
Habe schon wieder 2 Fragen:
Ich würde ein TCITEM mit den entsprechenden Infos füllen und an SetItem() übergeben.Verwechselst du das nicht gerade mit einer TreeCtrl?
In welcher Methode von CMainFrame kann ich ModifyMenu() aufrufen?
In OnCreate() zur Initialisierung des Menus?
-
maRKus23 schrieb:
Verwechselst du das nicht gerade mit einer TreeCtrl?
Ich hoffe nicht (zumindest habe ich die Methode bei der CTabCtrl gefunden).
In welcher Methode von CMainFrame kann ich ModifyMenu() aufrufen?
In OnCreate() zur Initialisierung des Menus?Wenn das Menü schon beim Start einen anderen Text darstellen soll, kannst du doch auch den entsprechenden Eintrag in den Ressourcen anpassen

-
Ich kann verschiedene Sprachen wählen!
Je nachdem mit welchen Spracheinstellungen das Programm beendet wurde, muss das Menue anders initialisert werden.
Ausserdem muss sich der Text auch während der Laufzeit ändern lassen, und ich habe momentan keine Ahnung wie das gehen soll.
-
Habe jetzt was gefunden
HMENU hMenu =::GetMenu(m_hWnd); ModifyMenu(hMenu, 0, MF_BYPOSITION, 0, "&Datei"); ModifyMenu(hMenu, ID_DATEI_FFNEN, MF_BYCOMMAND, ID_DATEI_FFNEN, "&Öffnen");In welcher Methode in CMainFrame muss ich das aufrufen?
-
So die Menu Eintäge ändern klappt jetzt mit dieser Funktion.
Mein Problem war wohl das in OnCreate() einen Pointer auf die Dokumentklasse holen wollte. Rufe die Methode jetzt in OnInitialUpdate in der CFormView auf.
-
Die Eigenschaftsseiten sind nicht von CTabCtrl abgeleitet, sondern von CPropertyPage, hab da wohl etwas missverständlich formuliert.
Wie kann ich denn dort den Titel der Pages ändern?
Habs mit m_psp.strTitel oder headertitel versucht, aber nichts funktioniert.
-
*nachsieht* In der PROPSHEETPAGE-Struktur gibt es eigentlich keinen Member strTitel, meintest du eventuell pszTitel? (wenn ja, hast du auch das Flag PSP_USETITLE gesetzt?)
Ansonsten - Du kannst auch einen Schritt nach oben (zum CPropertySheet, das alles zusammenhält) gehen und erreichst von dort aus per GetTabControl() die Tabs.
-
jap meinte pszTitel, habe auch das Flag PSP_USETITEL gesetzt und es hat nicht funktioniert.
Probiers jetzt mal mit GetTabControl(), vllt klappt das ja.
-
Es funktioniert nicht!!!
Mit GetTabControl() weiß ich nicht wie das geht.
Kannste mal Code posten.Hier mal mein Versuch mit pszTitel:
void CXXXApp::CreateTabs(Uint8_t nSelectedPage) { CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())->GetActiveDocument()); ASSERT(pDoc); CSheet sheet(pDoc->szString[89], NULL, nSelectedPage); CSettings pageSettings; CCommPort pageCommPort; CLanguage pageLanguage; /* delete the Help-button */ sheet.m_psh.dwFlags &= ~PSH_HASHELP; pageSettings.m_psp.dwFlags &= ~PSP_HASHELP; pageCommPort.m_psp.dwFlags &= ~PSP_HASHELP; pageLanguage.m_psp.dwFlags &= ~PSP_HASHELP; pageSettings.m_psp.dwFlags &= ~PSP_USETITLE; pageSettings.m_psp.pszTitle = "TEST"; sheet.AddPage(&pageSettings); sheet.AddPage(&pageCommPort); sheet.AddPage(&pageLanguage); sheet.DoModal(); }