菜单背景色设置,主要用到的函数SetMenuInfo
菜单位图加载,主要用到的函数SetMenuItemBitmaps。
1 // 菜单数组 2 const int g_MenuIDArray[] = 3 { 4 ID_RMENU_RUN, 5 ID_RMENU_ADD, 6 ID_RMENU_REMOVE, 7 ID_RMENU_SEEKFILE, 8 ID_TMENU_VIEW, 9 ID_TMENU_LOGOUT 10 }; 11 12 // 位图数组 13 const int g_BMPIDArray[] = 14 { 15 IDB_BITMAP_RUN, 16 IDB_BITMAP_ADD, 17 IDB_BITMAP_REMOVE, 18 IDB_BITMAP_SEEKFILE, 19 IDB_BITMAP_VIEW, 20 IDB_BITMAP_LOGOUT 21 };
1 // 初始化cmdID和bitmap的关系 2 void CToolBoxDlg::InitBMPMap() 3 { 4 for (int i = 0; i < sizeof(g_MenuIDArray)/sizeof(g_MenuIDArray[0]); i++) 5 { 6 CBitmap * bmp = new CBitmap; 7 bmp->LoadBitmap(g_BMPIDArray[i]); 8 m_bmpMap[g_MenuIDArray[i]] = bmp; 9 } 10 }
1 // 设置菜单背景 2 void CToolBoxDlg::SetMenuBkColor(CMenu * pMenu) 3 { 4 if (NULL == pMenu) 5 { 6 return; 7 } 8 9 MENUINFO menuInfo; 10 memset(&menuInfo, 0, sizeof(menuInfo)); 11 menuInfo.cbSize = sizeof(menuInfo); 12 menuInfo.hbrBack = m_brush; 13 menuInfo.fMask = MIM_BACKGROUND; 14 ::SetMenuInfo(pMenu->m_hMenu, &menuInfo); 15 } 16 17 // 加载菜单位图 18 void CToolBoxDlg::SetMenuBMP(CMenu * pMenu) 19 { 20 for (UINT i = 0; i < pMenu->GetMenuItemCount(); i++) 21 { 22 int nMenuId = pMenu->GetMenuItemID(i); 23 24 if (0 < nMenuId) 25 { 26 pMenu->SetMenuItemBitmaps(nMenuId, MF_BYCOMMAND, 27 m_bmpMap[nMenuId], m_bmpMap[nMenuId]); 28 } 29 } 30 }
1 // 设置菜单背景色和位图 2 void CToolBoxDlg::SetMenuBKInfo(CMenu * pMenu) 3 { 4 SetMenuBkColor(pMenu); 5 SetMenuBMP(pMenu); 6 }
1 // 右键列表框,弹出右键菜单 2 void CToolBoxDlg::OnNMRClickListToolbox(NMHDR *pNMHDR, LRESULT *pResult) 3 { 4 LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR); 5 6 CPoint pt; 7 8 GetCursorPos(&pt); 9 10 CMenu menu; 11 menu.LoadMenu(IDR_MENU_RIGHT); 12 13 CMenu *pPopup = menu.GetSubMenu(0); 14 15 SetMenuBKInfo(pPopup); 16 17 int nSelectIndex = pNMItemActivate->iItem; 18 19 if (Not_Find != nSelectIndex) 20 { 21 pPopup->EnableMenuItem(ID_RMENU_RUN, MF_BYCOMMAND | MF_ENABLED); 22 pPopup->EnableMenuItem(ID_RMENU_REMOVE, MF_BYCOMMAND | MF_ENABLED); 23 pPopup->EnableMenuItem(ID_RMENU_SEEKFILE, MF_BYCOMMAND | MF_ENABLED); 24 } 25 else 26 { 27 pPopup->EnableMenuItem(ID_RMENU_RUN, MF_BYCOMMAND | MF_DISABLED); 28 pPopup->EnableMenuItem(ID_RMENU_REMOVE, MF_BYCOMMAND | MF_DISABLED); 29 pPopup->EnableMenuItem(ID_RMENU_SEEKFILE, MF_BYCOMMAND | MF_DISABLED); 30 } 31 32 pPopup->TrackPopupMenu(TPM_LEFTALIGN, pt.x, pt.y, this); 33 34 *pResult = 0; 35 }
原文:http://www.cnblogs.com/ahcc08/p/4033567.html