ch10 菜单和其他资源


使用系统菜单


1-      HMENU GetSystemMenu( HWND hWnd,BOOL bRevert);

//用来设置系统menu 
 bRevert-> TRUE 时 会回复系统默认菜单
 bRevert-> FALSE 时, 允许在系统菜单上自定义(增加自己的菜单项)

 //用来增加菜单项的函数

步骤1. 预定义uIDNewItem ,


#define IDM_SYS_ABOUT           1
#define IDM_SYS_HELP            2
#define  IDM_SYS_REMOVE             3

步骤2. 获得系统菜单

HMENU hMenu = GetSystemMenu(hwnd,FALSE); //设为FALSE 代表可以自定义菜单

步骤3. 增加菜单项

   函数原型:BOOL AppendMenu( HMENU hMenu,
            UINT uFlags,
            UINT_PTR uIDNewItem,
            LPCTSTR lpNewItem
            );   

ValueDescription
MF_BITMAP使用位图作为菜单项。lpNewItem参数包含对位图的句柄。
MF_CHECKED在菜单项旁边放置一个复选标记。如果应用程序提供了检查标记位图
MF_DISABLED禁用菜单项,这样它就不能被选中,但是该标记不会对它进行灰色。
MF_ENABLED使菜单项能够被选中,并从它的灰色状态恢复它。
MF_GRAYED禁用菜单项,并对其进行灰色操作,以使其不能被选中。
MF_MENUBARBREAK函数与菜单栏的mfmenu断裂标志相同。对于一个下拉菜单、子菜单或快捷菜单,新列通过垂直线从旧列中分离出来。
MF_MENUBREAK将项目放置在新行(用于菜单栏)或新列(用于下拉菜单、子菜单或快捷菜单)中,而不需要分离列。
MF_OWNERDRAW
MF_POPUP指定菜单项打开下拉菜单或子菜单。uIDNewItem参数指定下拉菜单或子菜单的句柄。这个标志用于在菜单栏中添加一个菜单名,或者一个菜单项,它会打开一个下拉菜单、子菜单或快捷菜单的子菜单。
MF_SEPARATOR画一条水平线。此标记仅在下拉菜单、子菜单或快捷菜单中使用。这条线不能被灰色、禁用或突出显示。lpNewItem和uIDNewItem参数被忽略。
MF_STRINGSpecifies that the menu item is a text string; the lpNewItem parameter is a pointer to the string.
MF_UNCHECKED不要在项目旁边放置一个复选标记(默认)。如果应用程序提供了检查标记位图(见SetMenuItemBitmaps),这个标记将显示在菜单项旁边的清晰的位图。

    AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
    AppendMenu(hMenu, MF_STRING, IDM_SYS_ABOUT, TEXT("About"));
    AppendMenu(hMenu, MF_STRING, IDM_SYS_HELP, TEXT("Help..."));
    AppendMenu(hMenu, MF_STRING, IDM_SYS_REMOVE, TEXT("Remove"));

    case WM_SYSCOMMAND:
        switch (LOWORD(wParam))
        {
        case IDM_SYS_ABOUT:
            MessageBox(hwnd, TEXT("This is a About Menu!"), TEXT("About"), MB_OKCANCEL);
            return 0;
        case IDM_SYS_HELP:
            MessageBox(hwnd, TEXT("This Module has not implemented yet!"), TEXT("Help"), MB_ICONEXCLAMATION);
            return 0;
        case IDM_SYS_REMOVE:
            GetSystemMenu(hwnd, TRUE);
            return 0;
        }
        break;//结尾要用break,否则程序无法正常退出

==结尾要用break,否则程序无法正常退出==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值