Windwos SDK开发 --实现菜单的美观1

 

每当我们使用菜单的时候,面对着只有文字,是不是很枯燥?是不是也想贴张图上去秀一下?好,我们来实现它!

首先,如果我们创建一个主菜单和弹出菜单
HMENU MemBar,PopupMenu;
MemBar=CreateMenu();
PopupMenu=CreatePopupMenu();

这时候,我们就需要设定所添加菜单项的内容了,一个数据结构闪亮登场MENUITEMINFO,在MSDN上定义如下:
typedef struct tagMENUITEMINFO {
  UINT    cbSize;
  UINT    fMask;
  UINT    fType;
  UINT    fState;
  UINT    wID;
  HMENU   hSubMenu;
  HBITMAP hbmpChecked;
  HBITMAP hbmpUnchecked;
  ULONG_PTR dwItemData;
  LPTSTR  dwTypeData;
  UINT    cch;
  HBITMAP hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO;
其中,
cbSize 为该数据结构的大小,
fMask 为对该数据结构里成员的设置,可以有MIIM_BITMAP(对hbmpItem的设置)、MIIM_ID(对wID成员的设置)等等
fType 是对菜单选项类型的设置,可以是MFT_BITMAP、MFT_RIGHTORDER等等
fState 是对菜单项状态的设置,比如MFS_CHECKED、MFS_DISABLED等等
wID  只要我们在fMask上设置了MIIM_ID,就可以使用

还有一些在这里就不一一详述了,毕竟MSDN上可以很清楚的查阅

接着我们所关心的怎样在菜单上显示图片的问题,这时候,我们就需要为这些参数设定需要的值了
MENUITEMINFO menuItem={0};//初始化

menuItem.cbSize  =sizeof(MENUITEMINFO); //大小
menuItem.fMask  =MIIM_BITMAP | MIIM_STRING | MIIM_ID | MIIM_FTYPE;//指示所需要使用的成员
menuItem.fType  =MFT_RIGHTORDER; //类型设置
menuItem.dwTypeData =L"我的菜单";  //菜单项的名字,就是像 “文件”、“帮助”
menuItem.cch  =lstrlen(L"我的菜单");  //所显示的名字长度
menuItem.hbmpItem =LoadBitmap((HINSTANCE)GetModuleHandle(0), IDB_BITMAP_MY);//加载图片
menuItem.wID  =IDM_MY;  //菜单项的ID

然后,我们就需要插入这个菜单项了
InsertMenuItem(PopupMenu, NULL, NULL, &menuItem);
最后,设定我们所修改过的菜单
SetMenu(hWnd,MemBar);
大功告成!好了,试试吧! 

你可能感兴趣的:(数据结构,String,struct,null)