Symbol wird im Menü nicht angezeigt.
-
Ich öffne beim Klicken mit der rechten Maustaste ein Menü.
Dass funktioniert soweit ganz gut. Jetzt möchte ich noch ein paar Symbole im Menü anzeigen.
Doch aus irgend einem Grund wird das Test-Bild nicht angezeigt.
Leute, weis jemand von euch was ich falsch gemacht habe?// PopupMenü -> Laden des Menü's und ersetzen der Texte //straMenu CStringArray mit den Menü-Texten //DEF_MENU_FIRST_ID ID des ersten Menüeintrages void CMainDlg::OnBnClickedButtonMenue() { CMenu menu; int pMenuID = 0; DWORD SelectionMade; // Menü laden if(!menu.LoadMenu(IDR_MENU)) { MessageSound(MB_ICONERROR); return; } // Neue Texte in das Menü einfügen und Bitmap einfügen for(int i=0; i< DEF_MENU_CNT;i++) { // Text setzen menu.ModifyMenu(i+DEF_MENU_FIRST_ID, MF_BYCOMMAND|MF_STRING, i+DEF_MENU_FIRST_ID, straMenu[i]); CBitmap cBmp; // Testbild aus den Resourcen laden BOOL bReturn = cBmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1)); // Versuchen das Bild in das Menü zu setzen bReturn = menu.SetMenuItemBitmaps(i+DEF_MENU_FIRST_ID, MF_BYCOMMAND,&cBmp,&cBmp); } CMenu* pPopup = menu.GetSubMenu(pMenuID); ASSERT(pPopup != NULL); // Texte zu den Untermenüpositionen über die Position setzen pPopup->ModifyMenu(POS_MENUE_NAVIGAION,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[7]); pPopup->ModifyMenu(POS_MENUE_ANSICHT,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[22]); pPopup->ModifyMenu(POS_MENUE_DRUCKEN,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[27]); if(m_bVordergrund) { pPopup->CheckMenuItem(ID_ANSICHT_VORDERGRUND,MF_CHECKED|MF_BYCOMMAND); } else { pPopup->CheckMenuItem(ID_ANSICHT_VORDERGRUND,MF_UNCHECKED|MF_BYCOMMAND); } POINT pp; GetCursorPos(&pp); SelectionMade = pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, pp.x,pp.y,this); if(SelectionMade) { PostMessage(WM_COMMAND,SelectionMade); } pPopup->DestroyMenu(); }
-
Weis wirklich keiner was ich falsch gemacht haben könnte, außer dass ich die Fehler beim Lades ber BMP nicht abfrage?
Ich bekomme aber beim Laden und beim Setzen der Bitmap jedes mal ein TRUE.Gibt es einen anderen Weg Icons /Bitmaps im Menü anzuzeigen?
Die Links die ich dazu im Forum gefunden habe sind leider tod.
-
Jetzt hat dieser Beitrag über 100 Aufrufe.
Es kann doch nicht sein dass mir keiner weiterhelfen kann.
Hat denn wirklich keiner eine Vermutung was falsch laufen könnte?
-
Wie sieht Dein Menü aus in der Der Ressource?
Das Menü das Du anzeigst ist ein Submenu sieheCMenu* pPopup = menu.GetSubMenu(pMenuID);
Das Menü das Du änderst ist das übergeordnete Menü dass Du lädst:
if(!menu.LoadMenu(IDR_MENU))
Du änderst also gar nichts!
-
Martin Richter schrieb:
Wie sieht Dein Menü aus in der Der Ressource?
Es ist ein normales Menü, so wie es über die Resourcen-Ansicht hinzugefügt wird, bei dem das SubMenü Nr.0 mit Platzhaltertext gefüllt ist.
Martin Richter schrieb:
Das Menü das Du anzeigst ist ein Submenu siehe
CMenu* pPopup = menu.GetSubMenu(pMenuID);
Das Menü das Du änderst ist das übergeordnete Menü dass Du lädst:
if(!menu.LoadMenu(IDR_MENU))
Du änderst also gar nichts!
Soviel ich weis, kann man das Menü nur dann an der aktuellen Mausposition anzeigen, wenn man das Submenü extrahiert.
Oder sehe ich das falsch?
Denn wenn ich das Menü selbst anzeigen will, sehe ich nur einen senkrechten, grauen, Balken.Der Text wird definitiv geändert, da ich das Submenü über die ID's der einzelnen einträge ändere.
Und wenn ich die Bilder bei pPopup einfüge, werden sie trotzdem nicht angezeigt.
Langsam weis ich nicht mehr weiter.
-
Zeig bitte Code. Du must pPopup ändern!
-
So werden leider auch keine Icons angezeigt
void CMainDlg::OnRButtonUp(UINT nFlags, CPoint point) { OnBnClickedButtonMenue(); CDialog::OnRButtonUp(nFlags, point); } // PopupMenü -> Laden des Menü's und ersetzen der Texte // Das Menü wird beim Loslassen der rechten Maustasten und beim Anklicken einer Schaltfläche gezeigt. //straMenu CStringArray mit den Menü-Texten //DEF_MENU_FIRST_ID ID des ersten Menüeintrages void CMainDlg::OnBnClickedButtonMenue() { CMenu menu; int pMenuID = 0; DWORD SelectionMade; // Menü laden if(!menu.LoadMenu(IDR_MENU)) { MessageSound(MB_ICONERROR); return; } // Neue Texte in das Menü einfügen und Bitmap einfügen for(int i=0; i< DEF_MENU_CNT;i++) { // Text setzen menu.ModifyMenu(i+DEF_MENU_FIRST_ID, MF_BYCOMMAND|MF_STRING, i+DEF_MENU_FIRST_ID, straMenu[i]); } CMenu* pPopup = menu.GetSubMenu(pMenuID); ASSERT(pPopup != NULL); // Texte zu den Untermenüpositionen über die Position setzen pPopup->ModifyMenu(POS_MENUE_NAVIGAION,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[7]); pPopup->ModifyMenu(POS_MENUE_ANSICHT,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[22]); pPopup->ModifyMenu(POS_MENUE_DRUCKEN,MF_BYPOSITION,(UINT)menu.GetSubMenu(0)->GetSafeHmenu(),straMenu[27]); CBitmap cBmp; // Testbild aus den Resourcen laden if(!cBmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1))) { //<TODO>Hier eine sinnvolle Fehlermeldung einsetzen</TODO> MessageBox(_T("Fehler")); } for(int i=0; i< DEF_MENU_CNT;i++) { // Versuchen das Bild in das Menü zu setzen if(!pPopup->SetMenuItemBitmaps(i+DEF_MENU_FIRST_ID, MF_BYCOMMAND,&cBmp,&cBmp)) { //<TODO>Hier eine sinnvolle Fehlermeldung einsetzen</TODO> MessageBox(_T("Fehler")); } } if(m_bVordergrund) { pPopup->CheckMenuItem(ID_ANSICHT_VORDERGRUND,MF_CHECKED|MF_BYCOMMAND); } else { pPopup->CheckMenuItem(ID_ANSICHT_VORDERGRUND,MF_UNCHECKED|MF_BYCOMMAND); } POINT pp; GetCursorPos(&pp); SelectionMade = pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, pp.x,pp.y,this); if(SelectionMade) { PostMessage(WM_COMMAND,SelectionMade); } pPopup->DestroyMenu(); }
Wie meinst du dass mit dem Ändern von pPopup?
-
Gibt es irgend eine Einstellung oder eine Funktion die man aufrufen muss damit das anzeigen von Symbolen im Popup-Menü angezeigt wird?
Gibt es etwas dass man beachten muss damit es funktioniert?
Langsam weis ich jetzt wirklich nicht mehr weiter.
-
Ich habe jetzt die Projektdateien .ncb, .user und .suo gelöscht.
Und jetzt funktioniert das Anzeigen der bmp's im Menü.
Ich weis zwar nicht wiso das funktioniert hat, weil das eigentlich nichts mit dem Fehler zu tun hat, aber es hat funktioniert.Danke für eure Hilfe.
-
0815-Dau schrieb:
Ich habe jetzt die Projektdateien .ncb, .user und .suo gelöscht.
Und jetzt funktioniert das Anzeigen der bmp's im Menü.Diese Dateien haben nichts mit Deinem Problem zu tun, wie Du selber schon festgestellt hast.