SOUI官方论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 68|回复: 7

smenuex 响应菜单内消息

[复制链接]

1

主题

7

帖子

39

积分

22:00筑基期

Rank: 1

积分
39
发表于 7 天前 | 显示全部楼层 |阅读模式
首先呢,正常的菜单项消息,通过 OnCommand判断 nId 就可以了

1

主题

7

帖子

39

积分

22:00筑基期

Rank: 1

积分
39
 楼主| 发表于 7 天前 | 显示全部楼层

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

1

主题

7

帖子

39

积分

22:00筑基期

Rank: 1

积分
39
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 陈柏树 于 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

帖子

39

积分

22:00筑基期

Rank: 1

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

在 hostwnd里        MESSAGE_HANDLER_EX(UM_MENUEVENT,OnMenuExEvent)

函数里调用了默认响应链

1

主题

7

帖子

39

积分

22:00筑基期

Rank: 1

积分
39
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 陈柏树 于 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)
这样就响应菜单内的消息

2

主题

129

帖子

399

积分

版主

Rank: 7Rank: 7Rank: 7

积分
399
发表于 7 天前 | 显示全部楼层
回复

使用道具 举报

1

主题

7

帖子

39

积分

22:00筑基期

Rank: 1

积分
39
 楼主| 发表于 7 天前 | 显示全部楼层

2

主题

4

帖子

95

积分

24:00金丹期

Rank: 2

积分
95
发表于 7 天前 | 显示全部楼层
楼主 问一下 怎么给菜单的进行换肤?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2019-9-19 20:29

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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