Menu

1.菜单结构:

1.菜单显示什么 。。  字符串  ?  位图?

2.指向弹出菜单的句柄或者ID号

3.菜单的属性。带丹是否被禁用,变灰。

2.在程序中引用菜单。

3.在菜单中引用消息:

1.WM_MENUSELECT  随著使用者在功能表项中移动游标或者滑鼠,这对实作那些包含对功能表项的文字描述的状态列是很有帮助的。WM_MENUSELECT的参数如下所示:

.WM_MENUSELECT 是一个功能表追踪讯息,wParam的值告诉您目前选择的是功能表中的哪一项(加高亮度显示的那个),wParam的高字组中的「选择旗标」可以是下列这些旗标的组合:MF_GRAYED、MF_DISABLED、MF_CHECKED、MF_BITMAP、MF_POPUP、MF_HELP、MF_SYSMENU和MF_MOUSESELECT。如果您需要根据对功能表项的选择来改变视窗显示区域的内容,那么您可以使用WM_MENUSELECT讯息。许多程式把该讯息发送给DefWindowProc

.WM_INITMENUPOPUP讯息

当Windows准备显示一个突现式功能表时,它给视窗讯息处理程式发送一个WM_INITMENUPOPUP讯息,参数如下:

wParam: 突现式功能表代号

LOWORD (lParam):突现式功能表索引

HIWORD (lParam): 系统功能表为1,其他为0

4.WM_COMMAND消息

功能表

控制项

LOWORD (wParam):

功能表ID

控制项ID

HIWORD (wParam):

0

通知码

lParam:

0

子视窗代号

5.WM_SYSCOMMAND讯息类似於WM_COMMAND讯息,只是WM_SYSCOMMAND表示使用者从系统功能表中选择一个启用的功能表项:

wParam: 功能表ID

lParam: 0

然而,如果WM_SYSCOMMAND讯息是由按滑鼠按键产生的,LOWORD(lParam)和HIWORD(lParam)将包含滑鼠游标位置的x和y萤幕座标。

对於WM_SYSCOMMAND,功能表ID指示系统功能表中的哪一项被选中。对於预先定义的系统功能表项,较低的那四个位元应该和0xFFF0进行AND运算来遮罩掉,结果值应该为下列之一:SC_SIZE、SC_MOVE、SC_MINIMIZE、SC_MAXIMIZE、SC_NEXTWINDOW、SC_PREVWINDOW、SC_CLOSE、SC_VSCROLL、SC_HSCROLL、SC_ARRANGE、SC_RESTORE和SC_TASKLIST。此外,wParam可以是SC_MOUSEMENU或SC_KEYMENU。

如果您在系统功能表中添加功能表项,那么wParam的低字组将是您定义的功能表ID。为了避免与预先定义的功能表ID相冲突,应用程式应该使用小於0xF000的值,这对於将一般的WM_SYSCOMMAND讯息发送给DefWindowProc是很重要的。如果您不这样做,那么您实际上就是禁用了正常的系统功能表命令。

6.系统菜单:

在建立窗口后,将一个分隔符和两个菜单项添加到系统菜单中,

       hSysMenu = GetSystemMenu(hwnd,FALSE) ;//的到系统菜单的句柄,并表明菜单将被修改(FLASE)。
	AppendMenu(hSysMenu,MF_SEPARATOR,0,NULL) ;
	AppendMenu(hSysMenu,MF_STRING,IDM_SYS_ABOUT,TEXT("The PopMenu Item")) ;
	AppendMenu(hSysMenu,MF_STRING,IDM_SYS_HELP,TEXT("Help")) ;

7.弹出式菜单:

case WM_CREATE:
		{
			hMenu = GetMenu(hwnd) ;
			hSubMenu = GetSubMenu(hMenu,0) ;
		}
	case WM_RBUTTONUP:
		{
			point.x = LOWORD(lParam) ;
			point.y = HIWORD(lParam) ;
			ClientToScreen(hwnd,&point) ;
			TrackPopupMenu(hSubMenu,TPM_TOPALIGN |TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL) ;
			return 0 ;
		}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值