soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
smenu-i.h
1#ifndef __SMENU_I__H__
2#define __SMENU_I__H__
3
4#include <interface/obj-ref-i.h>
5#include <interface/sxml-i.h>
7
8SNSBEGIN
9
10#undef INTERFACE
11#define INTERFACE IMenu
12DECLARE_INTERFACE_(IMenu, IObjRef)
13{
14
15 //! 添加引用
16 /*!
17 * @return long - 当前引用计数
18 */
19 STDMETHOD_(long, AddRef)(THIS) PURE;
20
21 //! 释放引用
22 /*!
23 * @return long - 当前引用计数
24 */
25 STDMETHOD_(long, Release)(THIS) PURE;
26
27 //! 释放对象
28 /*!
29 * @return void
30 */
31 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
32
33 //=================================================================
34
35 /**
36 * @brief 关联到hmenu
37 * @param hMenu - 菜单句柄
38 * @return BOOL - 成功返回TRUE,失败返回FALSE
39 */
40 STDMETHOD_(BOOL, Attach)(THIS_ HMENU hMenu) PURE;
41
42 /**
43 * @brief 分离并释放其hmenu
44 * @return HMENU - 菜单句柄
45 */
46 STDMETHOD_(HMENU, Detach)(THIS) PURE;
47
48 /**
49 * @brief 获取hmenu
50 * @return HMENU - 菜单句柄
51 */
52 STDMETHOD_(HMENU, GetHMenu)(THIS) SCONST PURE;
53
54 /**
55 * @brief 从资源ID加载菜单
56 * @param resId - 资源ID
57 * @return BOOL - 成功返回TRUE,失败返回FALSE
58 */
59 STDMETHOD_(BOOL, LoadMenu)(THIS_ LPCTSTR resId) PURE;
60
61 /**
62 * @brief 从资源ID加载菜单(UTF-8编码)
63 * @param resId - 资源ID
64 * @return BOOL - 成功返回TRUE,失败返回FALSE
65 */
66 STDMETHOD_(BOOL, LoadMenuU8)(THIS_ LPCSTR resId) PURE;
67
68 /**
69 * @brief 从IXmlNode对象加载菜单
70 * @param xmlMenu - IXmlNode对象
71 * @return BOOL - 成功返回TRUE,失败返回FALSE
72 */
73 STDMETHOD_(BOOL, LoadMenu2)(THIS_ IXmlNode * xmlMenu) PURE;
74
75 /**
76 * @brief 设置菜单项的图标皮肤
77 * @param icons - 包含一组图标的ISkinObj对象
78 * @return void
79 */
80 STDMETHOD_(void, SetIconSkin)(THIS_ ISkinObj * icons) PURE;
81
82 /**
83 * @brief 插入一个菜单项
84 * @param uPosition - 插入位置
85 * @param uFlags - 标志,MF_BYCOMMAND或MF_BYPOSITION
86 * @param nIDNewItem - 项目ID
87 * @param strText - 文本
88 * @param iIcon - 图标索引
89 * @param hIcon - 图标句柄
90 * @return BOOL - 成功返回TRUE,失败返回FALSE
91 * @remark 如果hIcon不为空,则iIcon无效。菜单退出后将通过DestroyIcon删除hIcon。
92 */
93 STDMETHOD_(BOOL, InsertMenu)(THIS_ UINT uPosition, UINT uFlags, UINT_PTR nIDNewItem, LPCTSTR strText, int iIcon DEF_VAL(-1), HICON hIcon DEF_VAL(0)) PURE;
94
95 /**
96 * @brief 追加一个菜单项
97 * @param uFlags - 标志
98 * @param uIDNewItem - 新项ID
99 * @param lpNewItem - 新项文本
100 * @param iIcon - 图标索引
101 * @param hIcon - 图标句柄
102 * @return BOOL - 成功返回TRUE,失败返回FALSE
103 * @remark 如果hIcon不为空,则iIcon无效。菜单退出后将通过DestroyIcon删除hIcon。
104 */
105 STDMETHOD_(BOOL, AppendMenu)(THIS_ UINT uFlags, UINT_PTR uIDNewItem, LPCTSTR strText, int iIcon DEF_VAL(-1), HICON hIcon DEF_VAL(0)) PURE;
106
107 /**
108 * @brief 检查菜单单选项
109 * @param idFirst - 第一个ID
110 * @param idLast - 最后一个ID
111 * @param idCheck - 检查的ID
112 * @param uFlags - 标志
113 * @return BOOL - 成功返回TRUE,失败返回FALSE
114 */
115 STDMETHOD_(BOOL, CheckMenuItem)(THIS_ UINT uIdCheckItem, UINT uCheck) PURE;
116
117 /**
118 * @brief 检查菜单项
119 * @param uIdCheckItem - 检查项ID
120 * @param uCheck - 检查标志
121 * @return BOOL - 成功返回TRUE,失败返回FALSE
122 */
123 STDMETHOD_(BOOL, CheckMenuRadioItem)(THIS_ UINT idFirst, UINT idLast, UINT idCheck, UINT uFlags) PURE;
124
125 /**
126 * @brief 删除菜单项
127 * @param uPosition - 位置
128 * @param uFlags - 标志
129 * @return BOOL - 成功返回TRUE,失败返回FALSE
130 */
131 STDMETHOD_(BOOL, DeleteMenu)(THIS_ UINT uPosition, UINT uFlags) PURE;
132
133 /**
134 * @brief 弹出菜单
135 * @param uFlags - 标志
136 * @param x - X坐标
137 * @param y - Y坐标
138 * @param hWnd - 窗口句柄
139 * @param nScale - 缩放比例
140 * @return UINT - 选择的菜单项ID
141 */
142 STDMETHOD_(UINT, TrackPopupMenu)(THIS_ UINT uFlags, int x, int y, HWND hWnd, LPCRECT prcRect DEF_VAL(NULL), int nScale DEF_VAL(100)) PURE;
143
144 /**
145 * @brief 销毁菜单
146 * @return void
147 */
148 STDMETHOD_(void, DestroyMenu)(THIS) PURE;
149
150 /**
151 * @brief 修改菜单项文本
152 * @param uPosition - 位置
153 * @param uFlags - 标志
154 * @param lpItemString - 项目文本
155 * @return BOOL - 成功返回TRUE,失败返回FALSE
156 */
157 STDMETHOD_(BOOL, ModifyMenuString)(THIS_ UINT uPosition, UINT uFlags, LPCTSTR lpItemString) PURE;
158
159 /**
160 * @brief 设置菜单项用户数据
161 * @param uPosition - 位置
162 * @param uFlags - 标志
163 * @param ulUserData - 用户数据
164 * @return BOOL - 成功返回TRUE,失败返回FALSE
165 */
166 STDMETHOD_(BOOL, SetMenuUserData)(THIS_ UINT uPosition, UINT uFlags, ULONG_PTR ulUserData) PURE;
167
168 /**
169 * @brief 获取菜单项用户数据
170 * @param uPosition - 位置
171 * @param uFlags - 标志
172 * @return ULONG_PTR - 用户数据
173 */
174 STDMETHOD_(ULONG_PTR, GetMenuUserData)(THIS_ UINT uPosition, UINT uFlags) PURE;
175
176 /**
177 * @brief 获取上下文帮助ID
178 * @return DWORD - 上下文帮助ID
179 */
180 STDMETHOD_(DWORD, GetContextHelpId)(THIS) SCONST PURE;
181
182 /**
183 * @brief 设置上下文帮助ID
184 * @param dwId - 上下文帮助ID
185 * @return void
186 */
187 STDMETHOD_(void, SetContextHelpId)(THIS_ DWORD dwId) PURE;
188
189 /**
190 * @brief 获取子菜单
191 * @param nPos - 位置
192 * @return hmenu - 子菜单HMENU
193 */
194 STDMETHOD_(HMENU, GetSubMenu)(THIS_ int nPos) PURE;
195
196 /**
197 * @brief 获取菜单项文本
198 * @param uPosition - 位置
199 * @param uFlags - 标志
200 * @param lpItemString - 项目文本
201 * @return BOOL - 成功返回TRUE,失败返回FALSE
202 */
203 STDMETHOD_(BOOL, GetMenuString)(THIS_ UINT uPosition, UINT uFlags, IStringT * lpItemString) PURE;
204};
205
206SNSEND
207#endif // __SMENU_I__H__
Interface for Skin Objects.
Interface for reference counting.
Definition obj-ref-i.h:19
Interface for Skin Objects.
Definition SSkinobj-i.h:29
Interface for XML nodes.
Definition sxml-i.h:128