void CWinAppEx::ReplaceMenuIcon( UINT nID, HICON hIcon ) { int nImage = -1; if ( m_mapIDToImage.Lookup( nID, nImage ) ) { nImage = GetMenuImageList()->Replace( nImage, hIcon ); ASSERT( nImage != -1 ); m_mapIDToImage[ nID ] = nImage; } else { AddMenuIcon( nID, hIcon ); } }
void CMainFrame::SetupToolBar() { // Set the Resource IDs for the toolbar buttons AddToolBarButton(IDM_FILE_NEW); AddToolBarButton(IDM_FILE_OPEN, FALSE); AddToolBarButton(IDM_FILE_SAVE, FALSE); AddToolBarButton(0); // Separator AddToolBarButton(IDM_EDIT_CUT, FALSE); AddToolBarButton(IDM_EDIT_COPY, FALSE); AddToolBarButton(IDM_EDIT_PASTE, FALSE); AddToolBarButton(0); // Separator AddToolBarButton(IDM_FILE_PRINT, FALSE); AddToolBarButton(0); // Separator AddToolBarButton(IDM_HELP_ABOUT); // Remove the checkmark for container tabs at top ::CheckMenuItem(GetFrameMenu(), IDM_CONTAINER_TOP, MF_UNCHECKED); // Add some extra icons for menu items AddMenuIcon(IDM_FILE_NEWSIMPLE, (HICON)LoadImage(GetApp()->GetResourceHandle(), MAKEINTRESOURCE(IDI_SIMPLE), IMAGE_ICON, 0, 0, LR_SHARED)); AddMenuIcon(IDM_FILE_NEWRECT, (HICON)LoadImage(GetApp()->GetResourceHandle(), MAKEINTRESOURCE(IDI_RECT), IMAGE_ICON, 0, 0, LR_SHARED)); AddMenuIcon(IDM_FILE_NEWTEXT, (HICON)LoadImage(GetApp()->GetResourceHandle(), MAKEINTRESOURCE(IDI_TEXT), IMAGE_ICON, 0, 0, LR_SHARED)); AddMenuIcon(IDM_FILE_NEWLIST, (HICON)LoadImage(GetApp()->GetResourceHandle(), MAKEINTRESOURCE(IDI_FILEVIEW), IMAGE_ICON, 0, 0, LR_SHARED)); AddMenuIcon(IDM_FILE_NEWTREE, (HICON)LoadImage(GetApp()->GetResourceHandle(), MAKEINTRESOURCE(IDI_CLASSVIEW), IMAGE_ICON, 0, 0, LR_SHARED)); }
// ¸Þ´º¿¡ IDM_MENU_AAA, IDM_MENU_BBB, IDM_MENU_CCC.. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch( msg ) { case WM_CREATE: { // ±×¸®±â ¸Þ´º 1´Ü°è : ¸Þ´ºÀÇ ¼Ó¼º º¯°æ.. HMENU hMenu = GetMenu(hwnd); HMENU hSubMenu = GetSubMenu(hMenu, 0); AddMenuIcon( hSubMenu, IDM_MENU_AAA, LoadIcon(0, IDI_WINLOGO)); AddMenuIcon( hSubMenu, IDM_MENU_BBB, LoadIcon(0, IDI_APPLICATION)); AddMenuIcon( hSubMenu, IDM_MENU_CCC, LoadIcon(0, IDI_QUESTION)); } return 0; case WM_MEASUREITEM: { // ±×¸®±â ¸Þ´º 2´Ü°è : Å©±â ÁöÁ¤ PMEASUREITEMSTRUCT p = (PMEASUREITEMSTRUCT)lParam; p->itemWidth = GetSystemMetrics(SM_CYICON) *4; p->itemHeight = GetSystemMetrics(SM_CYICON); } return 0; case WM_DRAWITEM: { // ±×¸®±â ¸Þ´º 3´Ü°è : ¸Þ´º Ç׸ñ¿¡ ±×¸²À» ±×¸².. PDRAWITEMSTRUCT p = (PDRAWITEMSTRUCT)lParam; HDC hdc = p->hDC; RECT rc = p->rcItem; int id = p->itemID; int state = p->itemState; HMENU hMenu = (HMENU)(p->hwndItem); //----------------------------------------------------- COLORREF color; if( state & ODS_SELECTED) color = GetSysColor(COLOR_HIGHLIGHT); // ÁøÇÑ Ã»»ö else color = RGB(255, 255, 255); HBRUSH brush = CreateSolidBrush(color); FillRect(hdc, &rc, brush); // FrameRect(hdc, &rc, brush); DeleteObject(brush); SetBkMode(hdc, TRANSPARENT); // ±ÛÀÚÀÇ ¹è°æÀ» Åõ¸íÇÏ°Ô. //-------------------------------------------------------- // ÇØ´ç ¸Þ´ºItemÀÇ itemData¸¦ ¹Ù·Î ¾òÀ» ¼ö ÀÖ´Ù. HICON hIcon = (HICON)(p->itemData); DrawIcon(hdc, rc.left, rc.top, hIcon); char str[256]; GetMenuString(hMenu, id, str,256, MF_BYCOMMAND); TextOut(hdc, rc.left + 35, rc.top + 5, str, strlen(str)); } return 0; case WM_LBUTTONDOWN: return 0; case WM_RBUTTONDOWN: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); }