예제 #1
0
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 );
    }
}
예제 #2
0
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);
}