Menü des Symbols
-
Wenn man in seinem Programm auf das Symbol oben links klickt erscheint ein kleines Kontextmenü.
Meine Frage ist natürlich... wie kann ich dieses Menü bearbeiten?
In diesem Menü erscheint auch noch der Name des Projekts(beim AboutDlg), mein Programm hat einen anderen Namen somit passt das auch gar nicht....
mfg
-
-
Erhard... habs mal kurz überflogen... hab da aber nix von SysMenu gesehen

Also.. Wenn de das Menu meinst das aufpopt wenn de oben links auf das Programm Sysmbol klickst ... das wird... bei der Dlg basierten Anwendung in der OnInitDialog gesetzt... guck da mal nach
AppendMenu solltest de da finden 
-
@(D)Evil: stimmt.

In einer Dialoganwendung wird das Sysmenu wie folgt bearbeitet:
BOOL CXXXDlg::OnInitDialog() { CDialog::OnInitDialog(); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. // IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten } void CXXXDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }Den Text von IDS_ABOUTBOX kann man unter Ressourcen in der Stringtabelle ändern.
Physisch steht es in resource.h und XXX.rcWichtig ist hier die Klasse CMenu:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cmenu_class_members.asp
z.B. die Funktion AppendMenu von oben:pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cmenu.3a3a.appendmenu.asp
Hier findet sich ein kleines Beispiel in der MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cmenu.3a3a.createmenu.asp// The code fragment below shows how to create a new menu for the // application window using CreateMenu() and CreatePopupMenu(). // Then, the created menu will replace the current menu of the // application. The old menu will be destroyed with DestroyMenu(). // NOTE: The code fragment below is done in a CFrameWnd-derived class. // Create a new menu for the application window. VERIFY(m_NewMenu.CreateMenu()); // Create a "File" popup menu and insert this popup menu to the // new menu of the application window. The "File" menu has only // one menu item, i.e. "Exit". VERIFY(m_FileMenu.CreatePopupMenu()); m_FileMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"E&xit"); m_NewMenu.AppendMenu(MF_POPUP, (UINT) m_FileMenu.m_hMenu, "&File"); // Remove and destroy old menu SetMenu(NULL); CMenu* old_menu = CMenu::FromHandle(m_hMenuDefault); old_menu->DestroyMenu(); // Add new menu. SetMenu(&m_NewMenu); // Assign default menu m_hMenuDefault = m_NewMenu.m_hMenu;siehe auch: http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel7.htm (ab Abschnitt 7.2)
Ich hoffe, dass das nun weiter hilft.
-
Vielen Dank, hat sehr geholfen
