PopUp im Tray: Eintrag FETT darstellen
-
Hallo Forum,
ich habe in meinem Programmtray ein Popup
eingebunden. Darin sind 4 Einträge, die auch
alle angezeigt werden. Jetzt möchte ich gerne
den ersten Eintrag fett darstellen. Wie geht das ?
-
Niemand eine Idee
-
Versuch's mal so:
CMenu menu; ... menu.AppendMenu(MF_ENABLED | MF_STRING, id, text); // Zusätzliche Stati werden in einem Extra-Schritt // hinzugefügt, weil AppendMenu() Bits im Hiword ignoriert UINT state = MFS_DEFAULT; MENUITEMINFO mii = {0}; mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STATE; if (!::GetMenuItemInfo(menu.m_hMenu, id, FALSE, &mii)) return FALSE; mii.fState |= state; ::SetMenuItemInfo(menu.m_hMenu, id, FALSE, &mii);
-
Hi, sorry aber ich checks nicht wirklich.
Mein Basiscode zum erzeugen des PopUp bei Rechtsklick
auf das Systray-Icon:CMenu oMenu; if (oMenu.LoadMenu(IDR_MENU2)) { CMenu* pPopup = oMenu.GetSubMenu(0); ASSERT(pPopup != NULL); CPoint oPoint; // Figure out where the mouse is so we // can display the menu near it. GetCursorPos(&oPoint); SetForegroundWindow(); pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, oPoint.x, oPoint.y, this);
-
- Da du das Menü aus der Resource lädst,
brauchst du die Zeile mit AppendMenu nicht. Es sollte aber auch damit funktionieren.
- Die Variable menu heißt bei dir oPopup
- Und id ist die id des Menüeintrags, den du fett darstellen möchtest
-
Hi Uwe,
es ist mir schon peinlich, aber ich bekomme noch Fehler:
case WM_RBUTTONDOWN: {// The user clicked the right mouse button. // Let's give them a menu so they can start/stop // the animation. CMenu oMenu; if (oMenu.LoadMenu(IDR_MENU2)) { CMenu* pPopup = oMenu.GetSubMenu(0); ASSERT(pPopup != NULL); CPoint oPoint; // Figure out where the mouse is so we // can display the menu near it. GetCursorPos(&oPoint); SetForegroundWindow(); pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, oPoint.x, oPoint.y, this); //Eintrag Fett setzen UINT state = MFS_DEFAULT; MENUITEMINFO mii = {0}; mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STATE; if (!::GetMenuItemInfo(pPopup.m_hMenu, 32792, FALSE, &mii)) return FALSE; mii.fState |= state; ::SetMenuItemInfo(pPopup.m_hMenu, 32792, FALSE, &mii); } } break;
Ist pPopup richtig ? = error C2228: Der linke Teil von '.m_hMenu' muss
eine Klasse/Struktur/Union sein. Mit oMenu kann ich zwar kompilieren,
aber leider hat es keine Auswirkung aufs Menu.
Die 32792 ist die ID meines Eintrages aus dem Menu
-
Du musst den Menüeintrag natürlich fett machen bevor das Menü aufgerufen wird.
Und oPopup ist ein Zeiger, d.h. du greifst mit dem -> Operator auf die Member zu.
Für den Menüeintrag solltest du auch einen Identifier vergeben, so was wie ID_ANIMATE_START oder so. Das machst du im Menü-Editor.// The user clicked the right mouse button. // Let's give them a menu so they can start/stop // the animation. CMenu oMenu; if (oMenu.LoadMenu(IDR_MAINFRAME)) { CMenu* pPopup = oMenu.GetSubMenu(0); ASSERT(pPopup != NULL); CPoint oPoint; // Figure out where the mouse is so we // can display the menu near it. GetCursorPos(&oPoint); SetForegroundWindow(); //Eintrag Fett setzen UINT state = MFS_DEFAULT; MENUITEMINFO mii = {0}; mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STATE; if (::GetMenuItemInfo(pPopup->m_hMenu, 32792, FALSE, &mii)) { mii.fState |= state; ::SetMenuItemInfo(pPopup->m_hMenu, 32792, FALSE, &mii); } // Jetzt das Menü aufrufen pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, oPoint.x, oPoint.y, this); }
-