SOUI官方论坛

 找回密码
 立即注册
查看: 250|回复: 8

smenuex 响应菜单内消息

[复制链接]

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
发表于 2019-9-12 15:17:25 | 显示全部楼层 |阅读模式
首先呢,正常的菜单项消息,通过 OnCommand判断 nId 就可以了

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
 楼主| 发表于 2019-9-12 15:19:53 | 显示全部楼层

除此之外,menuitem 里定义了 radio,
radio触发的事件,主窗口怎么获取呢。

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
 楼主| 发表于 2019-9-12 15:21:57 | 显示全部楼层
本帖最后由 陈柏树 于 2019-9-12 15:25 编辑

soui里已经提供好方法 UM_MENUEVENT。
观察 BOOL SMenuEx::_HandleEvent(EventArgs *pEvt)中                            934   return (BOOL)::SendMessage(s_MenuData->GetOwner(), UM_MENUEVENT, 0, (LPARAM)pEvt);
这里说明菜单触发的消息转发给主窗口了,

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
 楼主| 发表于 2019-9-12 15:22:35 | 显示全部楼层
本帖最后由 陈柏树 于 2019-9-12 15:26 编辑

在 hostwnd里        MESSAGE_HANDLER_EX(UM_MENUEVENT,OnMenuExEvent)

函数里调用了默认响应链

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
 楼主| 发表于 2019-9-12 15:23:40 | 显示全部楼层
本帖最后由 陈柏树 于 2019-9-12 15:26 编辑

于是有如下处理,CMainDlg::
                EVENT_NAME_HANDLER(L"menu_radio_1", EventSwndStateChanged::EventID, OnMenuexMain)
                EVENT_NAME_HANDLER(L"menu_radio_2", EventSwndStateChanged::EventID, OnMenuexMain)
                EVENT_NAME_HANDLER(L"menu_radio_3", EventSwndStateChanged::EventID, OnMenuexMain)
                EVENT_NAME_HANDLER(L"menu_radio_4", EventSwndStateChanged::EventID, OnMenuexMain)
这样就响应菜单内的消息
:lol

该用户从未签到

21

主题

238

帖子

1033

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1033

突出贡献优秀版主

发表于 2019-9-12 15:29:16 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

1

主题

7

帖子

41

积分

22:00筑基期

Rank: 1

积分
41
 楼主| 发表于 2019-9-12 15:34:03 | 显示全部楼层

该用户从未签到

8

主题

24

帖子

479

积分

02:00元婴期

Rank: 3Rank: 3

积分
479
发表于 2019-9-12 16:26:00 | 显示全部楼层
楼主 问一下 怎么给菜单的进行换肤?

该用户从未签到

10

主题

41

帖子

879

积分

04:00化神期

Rank: 4

积分
879
发表于 2019-12-11 13:47:35 | 显示全部楼层
感谢楼主分享,请问下怎么关闭菜单呢,正常菜单项点击了会关闭,但菜单内的控件点击了应该何如关闭菜单?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|SOUI官方论坛 ( 粤ICP备18103663号-2 )

GMT+8, 2020-1-25 06:37

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表