soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SCtrl-i.h
1/************************************************************************/
2/* 这里定义控件操作接口,所有接口都从IObjRef继承,并且指定自己的接口ID */
3/************************************************************************/
4#ifndef __SCTRL_I__H__
5#define __SCTRL_I__H__
6#include <interface/SWindow-i.h>
8#include <interface/SRender-i.h>
9#include <interface/sstring-i.h>
10#include <interface/SAdapter-i.h>
11#include <interface/SListViewItemLocator-i.h>
12#include <interface/STreeViewItemLocator-i.h>
13#include <interface/STileViewItemLocator-i.h>
14#include <SGuidDef.h>
15SNSBEGIN
16
17// {BCB520F9-3C81-4AD7-AD E2-FE72BD761032}
18DEFINE_SGUID(IID_ICtrl, 0xBCB520F9, 0x3C81, 0x4AD7, 0xAD, 0xe2, 0xFE, 0x72, 0xBD, 0x76, 0x10, 0x32);
19#undef INTERFACE
20#define INTERFACE ICtrl
21DECLARE_INTERFACE_(ICtrl, IObjRef)
22{
23 DECLARE_CLASS_SIID(IID_ICtrl)
24
25 /**
26 * @brief 增加引用计数
27 * @return 新引用计数
28 */
29 STDMETHOD_(long, AddRef)(THIS) PURE;
30
31 /**
32 * @brief 减少引用计数
33 * @return 新引用计数
34 */
35 STDMETHOD_(long, Release)(THIS) PURE;
36
37 /**
38 * @brief 释放对象
39 * @return void
40 */
41 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
42
43 //////////////////////////////////////////////////////////////////////////
44
45 /**
46 * @brief 转换为IWindow*接口
47 * @return IWindow*接口
48 */
49 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
50};
51
52// {36D49C0A-CCBA-4238-98E2-B6ACB18824B5}
53DEFINE_SGUID(IID_IOsrPanel, 0x36d49c0a, 0xccba, 0x4238, 0x98, 0xe2, 0xb6, 0xac, 0xb1, 0x88, 0x24, 0xb5);
54#undef INTERFACE
55#define INTERFACE IOsrPanel
56DECLARE_INTERFACE_(IOsrPanel, ICtrl)
57{
58 DECLARE_CLASS_SIID(IID_IOsrPanel)
59 /**
60 * @brief 增加引用计数
61 * @return 新引用计数
62 */
63 STDMETHOD_(long, AddRef)(THIS) PURE;
64
65 /**
66 * @brief 减少引用计数
67 * @return 新引用计数
68 */
69 STDMETHOD_(long, Release)(THIS) PURE;
70
71 /**
72 * @brief 释放对象
73 * @return void
74 */
75 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
76
77 //////////////////////////////////////////////////////////////////////////
78
79 /**
80 * @brief 转换为IWindow*接口
81 * @return IWindow*接口
82 */
83 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
84 //////////////////////////////////////////////////////////////////////////
85
86 /**
87 * @brief 设置在列表中对应的索引
88 * @param index -- 索引值,在listview中它是一个索引号,在treeview中它是一个HTREEITEM值
89 * @return
90 */
91 STDMETHOD_(void, SetItemIndex)(THIS_ LPARAM index) PURE;
92
93 /**
94 * @brief 获取在列表中的索引
95 * @return LPARAM 在列表中的索引
96 */
97 STDMETHOD_(LPARAM, GetItemIndex)(CTHIS) SCONST PURE;
98
99 /**
100 * @brief 设置列表项的用户数据
101 * @param dwData -- 用户数据
102 * @return
103 */
104 STDMETHOD_(void, SetItemData)(THIS_ LPARAM dwData) PURE;
105
106 /**
107 * @brief 获取在列表中的用户数据
108 * @return LPARAM 在列表中的用户数据
109 */
110 STDMETHOD_(LPARAM, GetItemData)(CTHIS) SCONST PURE;
111
112 /**
113 * @brief 将panel的坐标转换为host坐标
114 * @param[in,out] POINT *pt 窗口坐标
115 * @return void
116 */
117 STDMETHOD_(void, PtToHost)(THIS_ POINT * pt) SCONST PURE;
118};
119
120// {F78CA81B-729B-4fe5-B3FE-6C70AD363017}
121DEFINE_SGUID(IID_IItemPanel, 0xf78ca81b, 0x729b, 0x4fe5, 0xb3, 0xfe, 0x6c, 0x70, 0xad, 0x36, 0x30, 0x17);
122
123#undef INTERFACE
124#define INTERFACE IItemPanel
125DECLARE_INTERFACE_(IItemPanel, IOsrPanel)
126{
127 DECLARE_CLASS_SIID(IID_IItemPanel)
128 /**
129 * @brief 增加引用计数
130 * @return 新引用计数
131 */
132 STDMETHOD_(long, AddRef)(THIS) PURE;
133
134 /**
135 * @brief 减少引用计数
136 * @return 新引用计数
137 */
138 STDMETHOD_(long, Release)(THIS) PURE;
139
140 /**
141 * @brief 释放对象
142 * @return void
143 */
144 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
145
146 //////////////////////////////////////////////////////////////////////////
147
148 /**
149 * @brief 转换为IWindow*接口
150 * @return IWindow*接口
151 */
152 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
153 //////////////////////////////////////////////////////////////////////////
154
155 /**
156 * @brief 设置在列表中对应的索引
157 * @param index -- 索引值,在listview中它是一个索引号,在treeview中它是一个HTREEITEM值
158 * @return
159 */
160 STDMETHOD_(void, SetItemIndex)(THIS_ LPARAM index) PURE;
161
162 /**
163 * @brief 获取在列表中的索引
164 * @return LPARAM 在列表中的索引
165 */
166 STDMETHOD_(LPARAM, GetItemIndex)(CTHIS) SCONST PURE;
167
168 /**
169 * @brief 设置列表项的用户数据
170 * @param dwData -- 用户数据
171 * @return
172 */
173 STDMETHOD_(void, SetItemData)(THIS_ LPARAM dwData) PURE;
174
175 /**
176 * @brief 获取在列表中的用户数据
177 * @return LPARAM 在列表中的用户数据
178 */
179 STDMETHOD_(LPARAM, GetItemData)(CTHIS) SCONST PURE;
180
181 /**
182 * @brief 将panel的坐标转换为host坐标
183 * @param[in,out] POINT *pt 窗口坐标
184 * @return void
185 */
186 STDMETHOD_(void, PtToHost)(THIS_ POINT * pt) SCONST PURE;
187 //////////////////////////////////////////////////////////////////////////
188
189 /**
190 * @brief 设置列表项的skin
191 * @param pSkin -- 列表项的skin
192 * @return
193 */
194 STDMETHOD_(void, SetSkin)(THIS_ ISkinObj * pSkin) PURE;
195
196 /**
197 * @brief 设置列表项的颜色配置
198 * @param crBk -- 背景颜色
199 * @param crSelBk -- 选中状态的背景颜色
200 * @return
201 */
202 STDMETHOD_(void, SetColor)(THIS_ COLORREF crBk, COLORREF crSelBk) PURE;
203};
204
205// {310A0C73-1DCA-4ac2-B6C9-569B0EA40496}
206DEFINE_SGUID(IID_IImageWnd, 0x310a0c73, 0x1dca, 0x4ac2, 0xb6, 0xc9, 0x56, 0x9b, 0xe, 0xa4, 0x4, 0x96);
207
208#undef INTERFACE
209#define INTERFACE IImageWnd
210DECLARE_INTERFACE_(IImageWnd, ICtrl)
211{
212 DECLARE_CLASS_SIID(IID_IImageWnd)
213 /**
214 * @brief 增加引用计数
215 * @return 新引用计数
216 */
217 STDMETHOD_(long, AddRef)(THIS) PURE;
218
219 /**
220 * @brief 减少引用计数
221 * @return 新引用计数
222 */
223 STDMETHOD_(long, Release)(THIS) PURE;
224
225 /**
226 * @brief 释放对象
227 * @return void
228 */
229 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
230
231 //////////////////////////////////////////////////////////////////////////
232
233 /**
234 * @brief 转换为IWindow*接口
235 * @return IWindow*接口
236 */
237 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
238 //////////////////////////////////////////////////////////////////////////
239
240 /**
241 * @brief 设置skin
242 * @param pSkin -- skin对象
243 * @param iFrame -- skin的子图索引
244 * @param bAutoFree -- 控件管理pSkin标志,为TRUE时调用方可以释放该Skin
245 * @return BOOL TRUE-成功,FALSE-失败
246 */
247 STDMETHOD_(BOOL, SetSkin)(THIS_ ISkinObj * pSkin, int iFrame DEF_VAL(0), BOOL bAutoFree DEF_VAL(TRUE)) PURE;
248
249 /**
250 * SImageWnd::GetSkin
251 * @brief 获取资源
252 * @return 返回值ISkinObj指针
253 *
254 * Describe 获取资源
255 */
256 STDMETHOD_(ISkinObj *, GetSkin)(THIS) PURE;
257
258 /**
259 * SImageWnd::SetImage
260 * @param IBitmap * pBitmap -- 图片对象
261 * @param FilterLevel fl -- FilterLevel
262 * @return void
263 *
264 * Describe 设置绘制图片
265 */
266 STDMETHOD_(void, SetImage)(THIS_ IBitmapS * pBitmap, FilterLevel fl DEF_VAL(kNone_FilterLevel)) PURE;
267
268 /**
269 * @brief 获取当前设置的IBitmapS对象
270 * @return IBitmapS * -- 当前设置的IBitmapS对象
271 */
272 STDMETHOD_(IBitmapS *, GetImage)(THIS) PURE;
273
274 /**
275 * SImageWnd::SetIcon
276 * @param int nSubID -- 子图在Skin中的索引号
277 * @brief 设置图标
278 * @return 返回值BOOL 成功--TRUE 失败--FALSE
279 *
280 * Describe 设置图标
281 */
282 STDMETHOD_(BOOL, SetIcon)(THIS_ int nSubID) PURE;
283};
284
285// {C2378093-CB34-4811-98D1-A721637B3B87}
286DEFINE_SGUID(IID_IAnimateImgWnd, 0xc2378093, 0xcb34, 0x4811, 0x98, 0xd1, 0xa7, 0x21, 0x63, 0x7b, 0x3b, 0x87);
287
288#undef INTERFACE
289#define INTERFACE IAnimateImgWnd
290DECLARE_INTERFACE_(IAnimateImgWnd, ICtrl)
291{
292 DECLARE_CLASS_SIID(IID_IAnimateImgWnd)
293 /**
294 * @brief 增加引用计数
295 * @return 新引用计数
296 */
297 STDMETHOD_(long, AddRef)(THIS) PURE;
298
299 /**
300 * @brief 减少引用计数
301 * @return 新引用计数
302 */
303 STDMETHOD_(long, Release)(THIS) PURE;
304
305 /**
306 * @brief 释放对象
307 * @return void
308 */
309 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
310
311 //////////////////////////////////////////////////////////////////////////
312
313 /**
314 * @brief 转换为IWindow*接口
315 * @return IWindow*接口
316 */
317 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
318 //////////////////////////////////////////////////////////////////////////
319
320 /**
321 * SAnimateImgWnd::Start
322 * @brief 启动动画
323 *
324 * Describe 启动动画
325 */
326 STDMETHOD_(void, Start)(THIS) PURE;
327 /**
328 * SAnimateImgWnd::Stop
329 * @brief 停止动画
330 *
331 * Describe 停止动画
332 */
333 STDMETHOD_(void, Stop)(THIS) PURE;
334
335 /**
336 * SAnimateImgWnd::IsPlaying
337 * @brief 判断动画运行状态
338 * @return 返回值是动画状态 TRUE -- 运行中
339 *
340 * Describe 判断动画运行状态
341 */
342 STDMETHOD_(BOOL, IsPlaying)(CTHIS) SCONST PURE;
343};
344
345// {0A572106-14E0-48d7-85C3-3E08B9DA85A8}
346DEFINE_SGUID(IID_IProg, 0xa572106, 0x14e0, 0x48d7, 0x85, 0xc3, 0x3e, 0x8, 0xb9, 0xda, 0x85, 0xa8);
347
348#undef INTERFACE
349#define INTERFACE IProgress
350DECLARE_INTERFACE_(IProgress, ICtrl)
351{
352 DECLARE_CLASS_SIID(IID_IProg)
353 /**
354 * @brief 增加引用计数
355 * @return 新引用计数
356 */
357 STDMETHOD_(long, AddRef)(THIS) PURE;
358
359 /**
360 * @brief 减少引用计数
361 * @return 新引用计数
362 */
363 STDMETHOD_(long, Release)(THIS) PURE;
364
365 /**
366 * @brief 释放对象
367 * @return void
368 */
369 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
370
371 //////////////////////////////////////////////////////////////////////////
372
373 /**
374 * @brief 转换为IWindow*接口
375 * @return IWindow*接口
376 */
377 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
378 //////////////////////////////////////////////////////////////////////////
379 /**
380 * SProgress::SetValue
381 * @brief 设置进度条进度值
382 * @param int nValue -- 进度值
383 * @return 返回值是 TRUE -- 设置成功
384 *
385 * Describe 设置进度条进度值
386 */
387 STDMETHOD_(BOOL, SetValue)(THIS_ int nValue) PURE;
388 /**
389 * SProgress::GetValue
390 * @brief 获取进度值
391 * @return 返回值是int
392 *
393 * Describe 获取进度值
394 */
395 STDMETHOD_(int, GetValue)(CTHIS) SCONST PURE;
396
397 /**
398 * SProgress::SetRange
399 * @param int nMin -- 进度最小值
400 * @param int nMax -- 进度最大值
401 * @brief 设置进度值最小大值
402 *
403 * Describe 设置进度值
404 */
405 STDMETHOD_(void, SetRange)(THIS_ int nMin, int nMax) PURE;
406 /**
407 * SProgress::GetRange
408 * @param int nMin -- 进度最小值
409 * @param int nMax -- 进度最大值
410 * @brief 获取进度值最小大值
411 *
412 * Describe 获取进度值
413 */
414 STDMETHOD_(void, GetRange)(CTHIS_ int *pMin, int *pMax) SCONST PURE;
415 /**
416 * SProgress::IsVertical
417 * @brief 判断进度条是否为竖直状态
418 * @return 返回值是 TRUE -- 竖直状态
419 *
420 * Describe 获取进度值
421 */
422 STDMETHOD_(BOOL, IsVertical)(CTHIS) SCONST PURE;
423};
424
425typedef enum _ScrollBarID
426{
427 SSB_NULL = 0,
428 SSB_HORZ = 1,
429 SSB_VERT = 2,
430 SSB_BOTH = (SSB_HORZ | SSB_VERT),
431} ScrollBarID;
432
433// {8DE0A6C5-9CBC-465f-B784-EBA4CB8AE6D9}
434DEFINE_SGUID(IID_IPanel, 0x8de0a6c5, 0x9cbc, 0x465f, 0xb7, 0x84, 0xeb, 0xa4, 0xcb, 0x8a, 0xe6, 0xd9);
435
436#undef INTERFACE
437#define INTERFACE IPanel
438DECLARE_INTERFACE_(IPanel, ICtrl)
439{
440 DECLARE_CLASS_SIID(IID_IPanel)
441 /**
442 * @brief 增加引用计数
443 * @return 新引用计数
444 */
445 STDMETHOD_(long, AddRef)(THIS) PURE;
446
447 /**
448 * @brief 减少引用计数
449 * @return 新引用计数
450 */
451 STDMETHOD_(long, Release)(THIS) PURE;
452
453 /**
454 * @brief 释放对象
455 * @return void
456 */
457 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
458
459 //////////////////////////////////////////////////////////////////////////
460
461 /**
462 * @brief 转换为IWindow*接口
463 * @return IWindow*接口
464 */
465 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
466 //////////////////////////////////////////////////////////////////////////
467
468 /**
469 * @brief 显示/隐藏滚动条
470 * @param wBar 滚动条标志,see ScrollBarID
471 * @param bShow TRUE-显示,FALSE-隐藏
472 * @return
473 */
474 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
475
476 /**
477 * @brief Enable/Disable滚动条
478 * @param wBar 滚动条标志,see ScrollBarID
479 * @param bShow TRUE-显示,FALSE-隐藏
480 * @return
481 */
482 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
483
484 /**
485 * @brief 获取滚动条Enable状态
486 * @param bVertical -- TRUE-垂直滚动条
487 * @return TRUE-enable
488 */
489 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
490
491 /**
492 * @brief 设置滚动条数据
493 * @param si --滚动条数据
494 * @param bVertical -- TRUE-垂直滚动条
495 * @return
496 */
497 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
498
499 /**
500 * @brief 设置滚动条位置
501 * @param bVertical -- TRUE-垂直滚动条
502 * @param nNewPos -- 滚动位置
503 * @param bRedraw -- 重绘标志
504 * @return
505 */
506 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
507
508 /**
509 * @brief 获取滚动条位置
510 * @param bVertical -- TRUE-垂直滚动条
511 * @return 滚动条位置
512 */
513 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
514
515 /**
516 * @brief 设置滚动条范围
517 * @param bVertical -- TRUE-垂直滚动条
518 * @param nMinPos -- 最小值
519 * @param nMaxPos -- 最大值
520 * @param bRedraw -- 重绘标志
521 * @return TRUE-成功
522 */
523 STDMETHOD_(BOOL, SetScrollRange)
524 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
525
526 /**
527 * @brief 获取滚动条范围
528 * @param bVertical -- TRUE-垂直滚动条
529 * @param lpMinPos -- 最小值
530 * @param lpMaxPos -- 最大值
531 * @return
532 */
533 STDMETHOD_(BOOL, GetScrollRange)
534 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
535
536 /**
537 * @brief 查询滚动条启用状态
538 * @param bVertical -- TRUE-垂直滚动条
539 * @return TRUE-启用
540 */
541 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
542};
543
544// {F7A4A172-31B2-4597-9DE5-F62160723733}
545DEFINE_SGUID(IID_IScrollView, 0xf7a4a172, 0x31b2, 0x4597, 0x9d, 0xe5, 0xf6, 0x21, 0x60, 0x72, 0x37, 0x33);
546#undef INTERFACE
547#define INTERFACE IScrollView
548DECLARE_INTERFACE_(IScrollView, IPanel)
549{
550 DECLARE_CLASS_SIID(IID_IScrollView)
551 /**
552 * @brief 增加引用计数
553 * @return 新引用计数
554 */
555 STDMETHOD_(long, AddRef)(THIS) PURE;
556
557 /**
558 * @brief 减少引用计数
559 * @return 新引用计数
560 */
561 STDMETHOD_(long, Release)(THIS) PURE;
562
563 /**
564 * @brief 释放对象
565 * @return void
566 */
567 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
568
569 //////////////////////////////////////////////////////////////////////////
570
571 /**
572 * @brief 转换为IWindow*接口
573 * @return IWindow*接口
574 */
575 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
576 //////////////////////////////////////////////////////////////////////////
577
578 /**
579 * @brief 显示/隐藏滚动条
580 * @param wBar 滚动条标志,see ScrollBarID
581 * @param bShow TRUE-显示,FALSE-隐藏
582 * @return
583 */
584 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
585
586 /**
587 * @brief Enable/Disable滚动条
588 * @param wBar 滚动条标志,see ScrollBarID
589 * @param bShow TRUE-显示,FALSE-隐藏
590 * @return
591 */
592 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
593
594 /**
595 * @brief 获取滚动条Enable状态
596 * @param bVertical -- TRUE-垂直滚动条
597 * @return TRUE-enable
598 */
599 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
600
601 /**
602 * @brief 设置滚动条数据
603 * @param si --滚动条数据
604 * @param bVertical -- TRUE-垂直滚动条
605 * @return
606 */
607 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
608
609 /**
610 * @brief 设置滚动条位置
611 * @param bVertical -- TRUE-垂直滚动条
612 * @param nNewPos -- 滚动位置
613 * @param bRedraw -- 重绘标志
614 * @return
615 */
616 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
617
618 /**
619 * @brief 获取滚动条位置
620 * @param bVertical -- TRUE-垂直滚动条
621 * @return 滚动条位置
622 */
623 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
624
625 /**
626 * @brief 设置滚动条范围
627 * @param bVertical -- TRUE-垂直滚动条
628 * @param nMinPos -- 最小值
629 * @param nMaxPos -- 最大值
630 * @param bRedraw -- 重绘标志
631 * @return TRUE-成功
632 */
633 STDMETHOD_(BOOL, SetScrollRange)
634 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
635
636 /**
637 * @brief 获取滚动条范围
638 * @param bVertical -- TRUE-垂直滚动条
639 * @param lpMinPos -- 最小值
640 * @param lpMaxPos -- 最大值
641 * @return
642 */
643 STDMETHOD_(BOOL, GetScrollRange)
644 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
645
646 /**
647 * @brief 查询滚动条启用状态
648 * @param bVertical -- TRUE-垂直滚动条
649 * @return TRUE-启用
650 */
651 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
652 //////////////////////////////////////////////////////////////////////////
653
654 /**
655 * @brief 获取视图尺寸
656 * @return SIZE-视图尺寸
657 */
658 STDMETHOD_(void, GetViewSize)(CTHIS_ SIZE * szView) SCONST PURE;
659
660 /**
661 * @brief 设置视图尺寸
662 * @param szView 视图尺寸
663 * @return
664 */
665 STDMETHOD_(void, SetViewSize)(THIS_ SIZE szView) PURE;
666
667 /**
668 * @brief 获取视图原点坐标
669 * @return POINT-原点坐标
670 */
671 STDMETHOD_(void, GetViewOrigin)(CTHIS_ POINT * ptOri) SCONST PURE;
672
673 /**
674 * @brief 设置视图原点坐标
675 * @param pt 原点坐标
676 * @return
677 */
678 STDMETHOD_(void, SetViewOrigin)(THIS_ POINT pt) PURE;
679};
680
681typedef enum _HeaderMask
682{
683 SHDI_WIDTH = 0x0001,
684 SHDI_TEXT = 0x0002,
685 SHDI_FORMAT = 0x0004,
686 SHDI_LPARAM = 0x0008,
687 SHDI_ORDER = 0x0010,
688 SHDI_VISIBLE = 0x0020,
689 SHDI_WEIGHT = 0x0040,
690 SHDI_ALL = 0xffff,
691} HeaderMask;
692
693/**
694 * @struct _SHDITEM
695 * @brief 列表头项
696 *
697 * Describe 列表头项
698 */
699typedef struct SHDITEM
700{
701 UINT mask;
702 int cx;
703 UINT fmt;
704 UINT state;
705 int iOrder;
706 LPTSTR pszText;
707 int cchMaxText;
708 LPARAM lParam;
709 BOOL bDpiAware;
710 BOOL bVisible;
711 float fWeight;
712} SHDITEM, *LPSHDITEM;
713
714// {EE19AA27-7C36-4426-8700-8FBCB0C738F5}
715DEFINE_SGUID(IID_IHeaderCtrl, 0xee19aa27, 0x7c36, 0x4426, 0x87, 0x0, 0x8f, 0xbc, 0xb0, 0xc7, 0x38, 0xf5);
716#undef INTERFACE
717#define INTERFACE IHeaderCtrl
718DECLARE_INTERFACE_(IHeaderCtrl, ICtrl)
719{
720 DECLARE_CLASS_SIID(IID_IHeaderCtrl)
721 /**
722 * @brief 增加引用计数
723 * @return 新引用计数
724 */
725 STDMETHOD_(long, AddRef)(THIS) PURE;
726
727 /**
728 * @brief 减少引用计数
729 * @return 新引用计数
730 */
731 STDMETHOD_(long, Release)(THIS) PURE;
732
733 /**
734 * @brief 释放对象
735 * @return void
736 */
737 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
738
739 //////////////////////////////////////////////////////////////////////////
740
741 /**
742 * @brief 转换为IWindow*接口
743 * @return IWindow*接口
744 */
745 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
746 //////////////////////////////////////////////////////////////////////////
747
748 /**
749 * SHeaderCtrl::InsertItem
750 * @brief 插入新项
751 * @param int iItem -- 新项索引
752 * @param LPCTSTR pszText -- 新项标题
753 * @param int nWidth -- 宽度
754 * @param BOOL bDpiAware -- dpi aware
755 * @param UINT fmt -- format flag
756 * @param LPARAM lParam -- 附加参数
757 * @return 返回int
758 *
759 * Describe 插入新项
760 */
761 STDMETHOD_(int, InsertItem)
762 (THIS_ int iItem, LPCTSTR pszText, int nWidth, UINT fmt, LPARAM lParam, BOOL bDpiAware /*=FALSE*/, float fWeight /*=0.0f*/) PURE;
763
764 STDMETHOD_(int, InsertItemA)
765 (THIS_ int iItem, LPCSTR pszText, int nWidth, UINT fmt, LPARAM lParam, BOOL bDpiAware /*=FALSE*/, float fWeight /*=0.0f*/) PURE;
766
767 /**
768 * SHeaderCtrl::GetItem
769 * @brief 获得新项
770 * @param int iItem -- 索引
771 * @param SHDITEM *pItem -- 返回列表项结构
772 * @return 返回BOOL
773 *
774 * Describe 获得新项
775 */
776 STDMETHOD_(BOOL, GetItem)(CTHIS_ int iItem, SHDITEM *pItem) SCONST PURE;
777
778 /**
779 * @brief 设置表头项数据
780 * @param iItem --索引号
781 * @param pItem --数据项
782 * @return
783 */
784 STDMETHOD_(BOOL, SetItem)(THIS_ int iItem, const SHDITEM *pItem) PURE;
785
786 /**
787 * SHeaderCtrl::GetItemCount
788 * @brief 获取列表项个数
789 * @return 返回int
790 *
791 * Describe 获取列表项个数
792 */
793 STDMETHOD_(UINT, GetItemCount)(CTHIS) SCONST PURE;
794 /**
795 * SHeaderCtrl::GetTotalWidth
796 * @brief 获得所有宽度
797 * @return 返回int
798 *
799 * Describe 获得所有宽度
800 */
801 STDMETHOD_(int, GetTotalWidth)(CTHIS_ BOOL bMinWid DEF_VAL(FALSE)) SCONST PURE;
802
803 /**
804 * @brief 表头自动填充父窗口宽度标志
805 * @return TRUE-表头自动填充父窗口宽度
806 */
807 STDMETHOD_(BOOL, IsAutoResize)(CTHIS) SCONST PURE;
808
809 /**
810 * SHeaderCtrl::GetItemWidth
811 * @brief 获得指定项宽度
812 * @param int iItem -- 索引
813 * @return 返回int
814 *
815 * Describe 获得新项
816 */
817 STDMETHOD_(int, GetItemWidth)(CTHIS_ int iItem) SCONST PURE;
818
819 /**
820 * SHeaderCtrl::DeleteItem
821 * @brief 删除指定项
822 * @param int iItem -- 索引
823 * @return 返回BOOL
824 *
825 * Describe 删除指定项
826 */
827 STDMETHOD_(BOOL, DeleteItem)(THIS_ int iItem) PURE;
828
829 /**
830 * SHeaderCtrl::DeleteAllItems
831 * @brief 删除所有项
832 *
833 * Describe 获得新项
834 */
835 STDMETHOD_(void, DeleteAllItems)(THIS) PURE;
836
837 /**
838 * @brief 设置表头项的排序标志
839 * @param iItem --表头项索引
840 * @param sortFlag --排序标志
841 * @remark 排序标志会传递到列表的排序回调接口,用户在回调接口中实现数据排序
842 */
843 STDMETHOD_(void, SetItemSort)(THIS_ int iItem, UINT sortFlag) PURE;
844
845 /**
846 * @brief 设置表头项是否隐藏
847 * @param iItem --表头项索引
848 * @param visible -- TRUE-显示,FALSE-隐藏
849 * @return
850 */
851 STDMETHOD_(void, SetItemVisible)(THIS_ int iItem, BOOL visible) PURE;
852
853 /**
854 * @brief 查询表头项是否隐藏
855 * @param iItem --表头项索引
856 * @return BOOL
857 */
858 STDMETHOD_(BOOL, IsItemVisible)(CTHIS_ int iItem) SCONST PURE;
859
860 /**
861 * @brief 获取表头项
862 * @param int iOrder -- show order
863 * @return int item index
864 *
865 * Describe 获取表头项得位置
866 */
867 STDMETHOD_(int, GetOriItemIndex)(CTHIS_ int iOrder) SCONST PURE;
868
869 /**
870 * @brief 获取表头项得位置
871 * @param int iItem -- 索引
872 * @param LPRECT prc -- 表头项得位置
873 *
874 * Describe 获取表头项得位置
875 */
876 STDMETHOD_(void, GetItemRect)(CTHIS_ int iItem, LPRECT prc) SCONST PURE;
877};
878
879// {107ED2EA-6C95-4cec-A300-2CE5AB0A7DDB}
880DEFINE_SGUID(IID_IListView, 0x107ed2ea, 0x6c95, 0x4cec, 0xa3, 0x0, 0x2c, 0xe5, 0xab, 0xa, 0x7d, 0xdb);
881#undef INTERFACE
882#define INTERFACE IListView
883DECLARE_INTERFACE_(IListView, IPanel)
884{
885 DECLARE_CLASS_SIID(IID_IListView)
886 /**
887 * @brief 增加引用计数
888 * @return 新引用计数
889 */
890 STDMETHOD_(long, AddRef)(THIS) PURE;
891
892 /**
893 * @brief 减少引用计数
894 * @return 新引用计数
895 */
896 STDMETHOD_(long, Release)(THIS) PURE;
897
898 /**
899 * @brief 释放对象
900 * @return void
901 */
902 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
903
904 //////////////////////////////////////////////////////////////////////////
905
906 /**
907 * @brief 转换为IWindow*接口
908 * @return IWindow*接口
909 */
910 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
911 //////////////////////////////////////////////////////////////////////////
912
913 /**
914 * @brief 显示/隐藏滚动条
915 * @param wBar 滚动条标志,see ScrollBarID
916 * @param bShow TRUE-显示,FALSE-隐藏
917 * @return
918 */
919 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
920
921 /**
922 * @brief Enable/Disable滚动条
923 * @param wBar 滚动条标志,see ScrollBarID
924 * @param bShow TRUE-显示,FALSE-隐藏
925 * @return
926 */
927 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
928
929 /**
930 * @brief 获取滚动条Enable状态
931 * @param bVertical -- TRUE-垂直滚动条
932 * @return TRUE-enable
933 */
934 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
935
936 /**
937 * @brief 设置滚动条数据
938 * @param si --滚动条数据
939 * @param bVertical -- TRUE-垂直滚动条
940 * @return
941 */
942 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
943
944 /**
945 * @brief 设置滚动条位置
946 * @param bVertical -- TRUE-垂直滚动条
947 * @param nNewPos -- 滚动位置
948 * @param bRedraw -- 重绘标志
949 * @return
950 */
951 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
952
953 /**
954 * @brief 获取滚动条位置
955 * @param bVertical -- TRUE-垂直滚动条
956 * @return 滚动条位置
957 */
958 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
959
960 /**
961 * @brief 设置滚动条范围
962 * @param bVertical -- TRUE-垂直滚动条
963 * @param nMinPos -- 最小值
964 * @param nMaxPos -- 最大值
965 * @param bRedraw -- 重绘标志
966 * @return TRUE-成功
967 */
968 STDMETHOD_(BOOL, SetScrollRange)
969 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
970
971 /**
972 * @brief 获取滚动条范围
973 * @param bVertical -- TRUE-垂直滚动条
974 * @param lpMinPos -- 最小值
975 * @param lpMaxPos -- 最大值
976 * @return
977 */
978 STDMETHOD_(BOOL, GetScrollRange)
979 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
980
981 /**
982 * @brief 查询滚动条启用状态
983 * @param bVertical -- TRUE-垂直滚动条
984 * @return TRUE-启用
985 */
986 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
987
988 //////////////////////////////////////////////////////////////////////////
989
990 /**
991 * @brief 设置列表的Adapter
992 * @param adapter -- Adapter对象
993 * @return BOOL
994 * @remark 通常只应该在列表初始化的时调用一次,列表会增加该Adapter的引用计数
995 */
996 STDMETHOD_(BOOL, SetAdapter)(THIS_ ILvAdapter * adapter) PURE;
997
998 /**
999 * @brief 获取控件的Adapter对象
1000 * @return ILvAdapter* - Adapter对象
1001 */
1002 STDMETHOD_(ILvAdapter *, GetAdapter)(CTHIS) SCONST PURE;
1003
1004 /**
1005 * @brief 设置列表项位置定位器
1006 * @param pItemLocator -- 位置定位器
1007 * @remark 位置定位器是一个将索引号和列表显示位置相互映射的接口,通过实现位置定位器,用户可以控制列表项的显示大小
1008 */
1009 STDMETHOD_(void, SetItemLocator)(THIS_ IListViewItemLocator * pItemLocator) PURE;
1010
1011 /**
1012 * @brief 获取位置定位器
1013 * @return IListViewItemLocator *
1014 */
1015 STDMETHOD_(IListViewItemLocator *, GetItemLocator)(CTHIS) SCONST PURE;
1016
1017 /**
1018 * @brief 使指定行滚动到视图可见区
1019 * @param iItem --行号
1020 * @return
1021 */
1022 STDMETHOD_(void, EnsureVisible)(THIS_ int iItem) PURE;
1023
1024 /**
1025 * @brief 选中指定行
1026 * @param iItem --行号
1027 * @param bNotify --触发选中状态事件标志
1028 * @return
1029 */
1030 STDMETHOD_(void, SetSel)(THIS_ int iItem, BOOL bNotify DEF_VAL(FALSE)) PURE;
1031
1032 /**
1033 * @brief 获取当前选中行
1034 * @return int 选中行索引,-1代表当前没有选中行
1035 */
1036 STDMETHOD_(int, GetSel)(CTHIS) SCONST PURE;
1037
1038 /**
1039 * @brief 热点测试
1040 * @param pt -- 输入坐标
1041 * @return IItemPanel *--坐标下的ItemPanel
1042 */
1043 STDMETHOD_(IItemPanel *, HitTest)(CTHIS_ const POINT *pt) SCONST PURE;
1044};
1045
1046// {A45F148C-F628-4df7-A60E-B51DA0017B00}
1047DEFINE_SGUID(IID_IMcListView, 0xa45f148c, 0xf628, 0x4df7, 0xa6, 0xe, 0xb5, 0x1d, 0xa0, 0x1, 0x7b, 0x0);
1048#undef INTERFACE
1049#define INTERFACE IMcListView
1050DECLARE_INTERFACE_(IMcListView, IPanel)
1051{
1052 DECLARE_CLASS_SIID(IID_IMcListView)
1053 /**
1054 * @brief 增加引用计数
1055 * @return 新引用计数
1056 */
1057 STDMETHOD_(long, AddRef)(THIS) PURE;
1058
1059 /**
1060 * @brief 减少引用计数
1061 * @return 新引用计数
1062 */
1063 STDMETHOD_(long, Release)(THIS) PURE;
1064
1065 /**
1066 * @brief 释放对象
1067 * @return void
1068 */
1069 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1070
1071 //////////////////////////////////////////////////////////////////////////
1072
1073 /**
1074 * @brief 转换为IWindow*接口
1075 * @return IWindow*接口
1076 */
1077 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1078 //////////////////////////////////////////////////////////////////////////
1079
1080 /**
1081 * @brief 显示/隐藏滚动条
1082 * @param wBar 滚动条标志,see ScrollBarID
1083 * @param bShow TRUE-显示,FALSE-隐藏
1084 * @return
1085 */
1086 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
1087
1088 /**
1089 * @brief Enable/Disable滚动条
1090 * @param wBar 滚动条标志,see ScrollBarID
1091 * @param bShow TRUE-显示,FALSE-隐藏
1092 * @return
1093 */
1094 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
1095
1096 /**
1097 * @brief 获取滚动条Enable状态
1098 * @param bVertical -- TRUE-垂直滚动条
1099 * @return TRUE-enable
1100 */
1101 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
1102
1103 /**
1104 * @brief 设置滚动条数据
1105 * @param si --滚动条数据
1106 * @param bVertical -- TRUE-垂直滚动条
1107 * @return
1108 */
1109 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
1110
1111 /**
1112 * @brief 设置滚动条位置
1113 * @param bVertical -- TRUE-垂直滚动条
1114 * @param nNewPos -- 滚动位置
1115 * @param bRedraw -- 重绘标志
1116 * @return
1117 */
1118 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
1119
1120 /**
1121 * @brief 获取滚动条位置
1122 * @param bVertical -- TRUE-垂直滚动条
1123 * @return 滚动条位置
1124 */
1125 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
1126
1127 /**
1128 * @brief 设置滚动条范围
1129 * @param bVertical -- TRUE-垂直滚动条
1130 * @param nMinPos -- 最小值
1131 * @param nMaxPos -- 最大值
1132 * @param bRedraw -- 重绘标志
1133 * @return TRUE-成功
1134 */
1135 STDMETHOD_(BOOL, SetScrollRange)
1136 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
1137
1138 /**
1139 * @brief 获取滚动条范围
1140 * @param bVertical -- TRUE-垂直滚动条
1141 * @param lpMinPos -- 最小值
1142 * @param lpMaxPos -- 最大值
1143 * @return
1144 */
1145 STDMETHOD_(BOOL, GetScrollRange)
1146 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
1147
1148 /**
1149 * @brief 查询滚动条启用状态
1150 * @param bVertical -- TRUE-垂直滚动条
1151 * @return TRUE-启用
1152 */
1153 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
1154 //////////////////////////////////////////////////////////////////////////
1155 /**
1156 * @brief 设置列表的Adapter
1157 * @param adapter -- Adapter对象
1158 * @return BOOL
1159 * @remark 通常只应该在列表初始化的时调用一次,列表会增加该Adapter的引用计数
1160 */
1161 STDMETHOD_(BOOL, SetAdapter)(THIS_ IMcAdapter * adapter) PURE;
1162
1163 /**
1164 * @brief 获取控件的Adapter对象
1165 * @return ILvAdapter* - Adapter对象
1166 */
1167 STDMETHOD_(IMcAdapter *, GetAdapter)(CTHIS) SCONST PURE;
1168
1169 /**
1170 * @brief 设置列表项位置定位器
1171 * @param pItemLocator -- 位置定位器
1172 * @remark 位置定位器是一个将索引号和列表显示位置相互映射的接口,通过实现位置定位器,用户可以控制列表项的显示大小
1173 */
1174 STDMETHOD_(void, SetItemLocator)(THIS_ IListViewItemLocator * pItemLocator) PURE;
1175
1176 /**
1177 * @brief 获取位置定位器
1178 * @return IListViewItemLocator *
1179 */
1180 STDMETHOD_(IListViewItemLocator *, GetItemLocator)(CTHIS) SCONST PURE;
1181
1182 /**
1183 * @brief 使指定行滚动到视图可见区
1184 * @param iItem --行号
1185 * @return
1186 */
1187 STDMETHOD_(void, EnsureVisible)(THIS_ int iItem) PURE;
1188
1189 /**
1190 * @brief 选中指定行
1191 * @param iItem --行号
1192 * @param bNotify --触发选中状态事件标志
1193 * @return
1194 */
1195 STDMETHOD_(void, SetSel)(THIS_ int iItem, BOOL bNotify /*= FALSE*/) PURE;
1196
1197 /**
1198 * @brief 获取当前选中行
1199 * @return int 选中行索引,-1代表当前没有选中行
1200 */
1201 STDMETHOD_(int, GetSel)(CTHIS) SCONST PURE;
1202
1203 /**
1204 * @brief 热点测试
1205 * @param pt -- 输入坐标
1206 * @return IItemPanel *--坐标下的ItemPanel
1207 */
1208 STDMETHOD_(IItemPanel *, HitTest)(CTHIS_ const POINT *pt) SCONST PURE;
1209
1210 /**
1211 * @brief 获取表头控件
1212 * @return IHeaderCtrl *--表头控件
1213 */
1214 STDMETHOD_(IHeaderCtrl *, GetIHeaderCtrl)(CTHIS) SCONST PURE;
1215
1216 /**
1217 * @brief 插入一列
1218 * @param nIndex --插入位置,-1代表append
1219 * @param pszText --文本
1220 * @param nWidth --占用宽度
1221 * @param fmt --显示格式
1222 * @param lParam --自定义数据
1223 * @param bDpiAware --宽度感知dpi缩放
1224 * @param fWeight --宽度的weight属性
1225 * @return 插入位置
1226 */
1227 STDMETHOD_(int, InsertColumn)
1228 (THIS_ int nIndex, LPCTSTR pszText, int nWidth, UINT fmt, LPARAM lParam DEF_VAL(0), BOOL bDpiAware DEF_VAL(TRUE), float fWeight DEF_VAL(0.0f)) PURE;
1229
1230 /**
1231 * @brief 删除列
1232 * @param iCol --列索引
1233 * @return
1234 */
1235 STDMETHOD_(void, DeleteColumn)(THIS_ int iCol) PURE;
1236
1237 /**
1238 * @brief 获取列数
1239 * @return int 列数
1240 */
1241 STDMETHOD_(int, GetColumnCount)(CTHIS) SCONST PURE;
1242};
1243
1244// {572CA529-AFFF-412c-8A51-2014A9801739}
1245DEFINE_SGUID(IID_ITreeView, 0x572ca529, 0xafff, 0x412c, 0x8a, 0x51, 0x20, 0x14, 0xa9, 0x80, 0x17, 0x39);
1246#undef INTERFACE
1247#define INTERFACE ITreeView
1248DECLARE_INTERFACE_(ITreeView, IPanel)
1249{
1250 DECLARE_CLASS_SIID(IID_ITreeView)
1251 /**
1252 * @brief 增加引用计数
1253 * @return 新引用计数
1254 */
1255 STDMETHOD_(long, AddRef)(THIS) PURE;
1256
1257 /**
1258 * @brief 减少引用计数
1259 * @return 新引用计数
1260 */
1261 STDMETHOD_(long, Release)(THIS) PURE;
1262
1263 /**
1264 * @brief 释放对象
1265 * @return void
1266 */
1267 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1268
1269 //////////////////////////////////////////////////////////////////////////
1270
1271 /**
1272 * @brief 转换为IWindow*接口
1273 * @return IWindow*接口
1274 */
1275 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1276 //////////////////////////////////////////////////////////////////////////
1277
1278 /**
1279 * @brief 显示/隐藏滚动条
1280 * @param wBar 滚动条标志,see ScrollBarID
1281 * @param bShow TRUE-显示,FALSE-隐藏
1282 * @return
1283 */
1284 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
1285
1286 /**
1287 * @brief Enable/Disable滚动条
1288 * @param wBar 滚动条标志,see ScrollBarID
1289 * @param bShow TRUE-显示,FALSE-隐藏
1290 * @return
1291 */
1292 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
1293
1294 /**
1295 * @brief 获取滚动条Enable状态
1296 * @param bVertical -- TRUE-垂直滚动条
1297 * @return TRUE-enable
1298 */
1299 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
1300
1301 /**
1302 * @brief 设置滚动条数据
1303 * @param si --滚动条数据
1304 * @param bVertical -- TRUE-垂直滚动条
1305 * @return
1306 */
1307 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
1308
1309 /**
1310 * @brief 设置滚动条位置
1311 * @param bVertical -- TRUE-垂直滚动条
1312 * @param nNewPos -- 滚动位置
1313 * @param bRedraw -- 重绘标志
1314 * @return
1315 */
1316 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
1317
1318 /**
1319 * @brief 获取滚动条位置
1320 * @param bVertical -- TRUE-垂直滚动条
1321 * @return 滚动条位置
1322 */
1323 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
1324
1325 /**
1326 * @brief 设置滚动条范围
1327 * @param bVertical -- TRUE-垂直滚动条
1328 * @param nMinPos -- 最小值
1329 * @param nMaxPos -- 最大值
1330 * @param bRedraw -- 重绘标志
1331 * @return TRUE-成功
1332 */
1333 STDMETHOD_(BOOL, SetScrollRange)
1334 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
1335
1336 /**
1337 * @brief 获取滚动条范围
1338 * @param bVertical -- TRUE-垂直滚动条
1339 * @param lpMinPos -- 最小值
1340 * @param lpMaxPos -- 最大值
1341 * @return
1342 */
1343 STDMETHOD_(BOOL, GetScrollRange)
1344 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
1345
1346 /**
1347 * @brief 查询滚动条启用状态
1348 * @param bVertical -- TRUE-垂直滚动条
1349 * @return TRUE-启用
1350 */
1351 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
1352 //////////////////////////////////////////////////////////////////////////
1353 /**
1354 * @brief 设置列表的Adapter
1355 * @param adapter -- Adapter对象
1356 * @return BOOL
1357 * @remark 通常只应该在列表初始化的时调用一次,列表会增加该Adapter的引用计数
1358 */
1359 STDMETHOD_(BOOL, SetAdapter)(THIS_ ITvAdapter * adapter) PURE;
1360
1361 /**
1362 * @brief 获取控件的Adapter对象
1363 * @return ILvAdapter* - Adapter对象
1364 */
1365 STDMETHOD_(ITvAdapter *, GetAdapter)(CTHIS) SCONST PURE;
1366
1367 /**
1368 * @brief 设置列表项位置定位器
1369 * @param pItemLocator -- 位置定位器
1370 * @remark 位置定位器是一个将索引号和列表显示位置相互映射的接口,通过实现位置定位器,用户可以控制列表项的显示大小
1371 */
1372 STDMETHOD_(void, SetItemLocator)(THIS_ ITreeViewItemLocator * pItemLocator) PURE;
1373
1374 /**
1375 * @brief 获取位置定位器
1376 * @return IListViewItemLocator *
1377 */
1378 STDMETHOD_(ITreeViewItemLocator *, GetItemLocator)(CTHIS) SCONST PURE;
1379
1380 /**
1381 * @brief 使指定行滚动到视图可见区
1382 * @param hItem --HSTREEITEM
1383 * @return
1384 */
1385 STDMETHOD_(void, EnsureVisible)(THIS_ HSTREEITEM hItem) PURE;
1386
1387 /**
1388 * @brief 选中指定行
1389 * @param hItem --HSTREEITEM
1390 * @param bNotify --触发选中状态事件标志
1391 * @return
1392 */
1393 STDMETHOD_(void, SetSel)(THIS_ HSTREEITEM hItem, BOOL bNotify DEF_VAL(FALSE)) PURE;
1394
1395 /**
1396 * @brief 获取当前选中行
1397 * @return HSTREEITEM 选中行索引,0代表当前没有选中行
1398 */
1399 STDMETHOD_(HSTREEITEM, GetSel)(CTHIS) SCONST PURE;
1400
1401 /**
1402 * @brief 热点测试
1403 * @param pt -- 输入坐标
1404 * @return IItemPanel *--坐标下的ItemPanel
1405 */
1406 STDMETHOD_(IItemPanel *, HitTest)(CTHIS_ const POINT *pt) SCONST PURE;
1407};
1408
1409// {5586EA88-3D4B-4d5f-8F71-436D43420D00}
1410DEFINE_SGUID(IID_ITileView, 0x5586ea88, 0x3d4b, 0x4d5f, 0x8f, 0x71, 0x43, 0x6d, 0x43, 0x42, 0xd, 0x0);
1411#undef INTERFACE
1412#define INTERFACE ITileView
1413DECLARE_INTERFACE_(ITileView, IPanel)
1414{
1415 DECLARE_CLASS_SIID(IID_ITileView)
1416 /**
1417 * @brief 增加引用计数
1418 * @return 新引用计数
1419 */
1420 STDMETHOD_(long, AddRef)(THIS) PURE;
1421
1422 /**
1423 * @brief 减少引用计数
1424 * @return 新引用计数
1425 */
1426 STDMETHOD_(long, Release)(THIS) PURE;
1427
1428 /**
1429 * @brief 释放对象
1430 * @return void
1431 */
1432 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1433
1434 //////////////////////////////////////////////////////////////////////////
1435
1436 /**
1437 * @brief 转换为IWindow*接口
1438 * @return IWindow*接口
1439 */
1440 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1441 //////////////////////////////////////////////////////////////////////////
1442
1443 /**
1444 * @brief 显示/隐藏滚动条
1445 * @param wBar 滚动条标志,see ScrollBarID
1446 * @param bShow TRUE-显示,FALSE-隐藏
1447 * @return
1448 */
1449 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
1450
1451 /**
1452 * @brief Enable/Disable滚动条
1453 * @param wBar 滚动条标志,see ScrollBarID
1454 * @param bShow TRUE-显示,FALSE-隐藏
1455 * @return
1456 */
1457 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
1458
1459 /**
1460 * @brief 获取滚动条Enable状态
1461 * @param bVertical -- TRUE-垂直滚动条
1462 * @return TRUE-enable
1463 */
1464 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
1465
1466 /**
1467 * @brief 设置滚动条数据
1468 * @param si --滚动条数据
1469 * @param bVertical -- TRUE-垂直滚动条
1470 * @return
1471 */
1472 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
1473
1474 /**
1475 * @brief 设置滚动条位置
1476 * @param bVertical -- TRUE-垂直滚动条
1477 * @param nNewPos -- 滚动位置
1478 * @param bRedraw -- 重绘标志
1479 * @return
1480 */
1481 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
1482
1483 /**
1484 * @brief 获取滚动条位置
1485 * @param bVertical -- TRUE-垂直滚动条
1486 * @return 滚动条位置
1487 */
1488 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
1489
1490 /**
1491 * @brief 设置滚动条范围
1492 * @param bVertical -- TRUE-垂直滚动条
1493 * @param nMinPos -- 最小值
1494 * @param nMaxPos -- 最大值
1495 * @param bRedraw -- 重绘标志
1496 * @return TRUE-成功
1497 */
1498 STDMETHOD_(BOOL, SetScrollRange)
1499 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
1500
1501 /**
1502 * @brief 获取滚动条范围
1503 * @param bVertical -- TRUE-垂直滚动条
1504 * @param lpMinPos -- 最小值
1505 * @param lpMaxPos -- 最大值
1506 * @return
1507 */
1508 STDMETHOD_(BOOL, GetScrollRange)
1509 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
1510
1511 /**
1512 * @brief 查询滚动条启用状态
1513 * @param bVertical -- TRUE-垂直滚动条
1514 * @return TRUE-启用
1515 */
1516 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
1517 //////////////////////////////////////////////////////////////////////////
1518 /**
1519 * @brief 设置列表的Adapter
1520 * @param adapter -- Adapter对象
1521 * @return BOOL
1522 * @remark 通常只应该在列表初始化的时调用一次,列表会增加该Adapter的引用计数
1523 */
1524 STDMETHOD_(BOOL, SetAdapter)(THIS_ ILvAdapter * adapter) PURE;
1525
1526 /**
1527 * @brief 获取控件的Adapter对象
1528 * @return ILvAdapter* - Adapter对象
1529 */
1530 STDMETHOD_(ILvAdapter *, GetAdapter)(CTHIS) SCONST PURE;
1531
1532 /**
1533 * @brief 设置列表项位置定位器
1534 * @param pItemLocator -- 位置定位器
1535 * @remark 位置定位器是一个将索引号和列表显示位置相互映射的接口,通过实现位置定位器,用户可以控制列表项的显示大小
1536 */
1537 STDMETHOD_(void, SetItemLocator)(THIS_ ITileViewItemLocator * pItemLocator) PURE;
1538
1539 /**
1540 * @brief 获取位置定位器
1541 * @return ITileViewItemLocator *
1542 */
1543 STDMETHOD_(ITileViewItemLocator *, GetItemLocator)(CTHIS) SCONST PURE;
1544
1545 /**
1546 * @brief 使指定行滚动到视图可见区
1547 * @param iItem --行号
1548 * @return
1549 */
1550 STDMETHOD_(void, EnsureVisible)(THIS_ int iItem) PURE;
1551
1552 /**
1553 * @brief 选中指定行
1554 * @param iItem --行号
1555 * @param bNotify --触发选中状态事件标志
1556 * @return
1557 */
1558 STDMETHOD_(void, SetSel)(THIS_ int iItem, BOOL bNotify DEF_VAL(FALSE)) PURE;
1559
1560 /**
1561 * @brief 获取当前选中行
1562 * @return int 选中行索引,-1代表当前没有选中行
1563 */
1564 STDMETHOD_(int, GetSel)(CTHIS) SCONST PURE;
1565
1566 /**
1567 * @brief 热点测试
1568 * @param pt -- 输入坐标
1569 * @return IItemPanel *--坐标下的ItemPanel
1570 */
1571 STDMETHOD_(IItemPanel *, HitTest)(CTHIS_ const POINT *pt) SCONST PURE;
1572};
1573
1574// {B0B45363-3D10-4889-9459-A2A84E37575F}
1575DEFINE_SGUID(IID_IListBox, 0xb0b45363, 0x3d10, 0x4889, 0x94, 0x59, 0xa2, 0xa8, 0x4e, 0x37, 0x57, 0x5f);
1576#undef INTERFACE
1577#define INTERFACE IListBox
1578DECLARE_INTERFACE_(IListBox, IPanel)
1579{
1580 DECLARE_CLASS_SIID(IID_IListBox)
1581 /**
1582 * @brief 增加引用计数
1583 * @return 新引用计数
1584 */
1585 STDMETHOD_(long, AddRef)(THIS) PURE;
1586
1587 /**
1588 * @brief 减少引用计数
1589 * @return 新引用计数
1590 */
1591 STDMETHOD_(long, Release)(THIS) PURE;
1592
1593 /**
1594 * @brief 释放对象
1595 * @return void
1596 */
1597 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1598
1599 //////////////////////////////////////////////////////////////////////////
1600
1601 /**
1602 * @brief 转换为IWindow*接口
1603 * @return IWindow*接口
1604 */
1605 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1606 //////////////////////////////////////////////////////////////////////////
1607
1608 /**
1609 * @brief 显示/隐藏滚动条
1610 * @param wBar 滚动条标志,see ScrollBarID
1611 * @param bShow TRUE-显示,FALSE-隐藏
1612 * @return
1613 */
1614 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
1615
1616 /**
1617 * @brief Enable/Disable滚动条
1618 * @param wBar 滚动条标志,see ScrollBarID
1619 * @param bShow TRUE-显示,FALSE-隐藏
1620 * @return
1621 */
1622 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
1623
1624 /**
1625 * @brief 获取滚动条Enable状态
1626 * @param bVertical -- TRUE-垂直滚动条
1627 * @return TRUE-enable
1628 */
1629 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
1630
1631 /**
1632 * @brief 设置滚动条数据
1633 * @param si --滚动条数据
1634 * @param bVertical -- TRUE-垂直滚动条
1635 * @return
1636 */
1637 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
1638
1639 /**
1640 * @brief 设置滚动条位置
1641 * @param bVertical -- TRUE-垂直滚动条
1642 * @param nNewPos -- 滚动位置
1643 * @param bRedraw -- 重绘标志
1644 * @return
1645 */
1646 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
1647
1648 /**
1649 * @brief 获取滚动条位置
1650 * @param bVertical -- TRUE-垂直滚动条
1651 * @return 滚动条位置
1652 */
1653 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
1654
1655 /**
1656 * @brief 设置滚动条范围
1657 * @param bVertical -- TRUE-垂直滚动条
1658 * @param nMinPos -- 最小值
1659 * @param nMaxPos -- 最大值
1660 * @param bRedraw -- 重绘标志
1661 * @return TRUE-成功
1662 */
1663 STDMETHOD_(BOOL, SetScrollRange)
1664 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
1665
1666 /**
1667 * @brief 获取滚动条范围
1668 * @param bVertical -- TRUE-垂直滚动条
1669 * @param lpMinPos -- 最小值
1670 * @param lpMaxPos -- 最大值
1671 * @return
1672 */
1673 STDMETHOD_(BOOL, GetScrollRange)
1674 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
1675
1676 /**
1677 * @brief 查询滚动条启用状态
1678 * @param bVertical -- TRUE-垂直滚动条
1679 * @return TRUE-启用
1680 */
1681 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
1682 //////////////////////////////////////////////////////////////////////////
1683 /**
1684 * SListBox::GetCount
1685 * @brief 获取项个数
1686 * @return 返回int
1687 *
1688 * Describe 获取项个数
1689 */
1690 STDMETHOD_(int, GetCount)(CTHIS) SCONST PURE;
1691
1692 /**
1693 * SListBox::GetCurSel
1694 * @brief 获取当前选中项索引
1695 * @return 返回int
1696 *
1697 * Describe 获取当前选中项索引
1698 */
1699 STDMETHOD_(int, GetCurSel)(CTHIS) SCONST PURE;
1700
1701 /**
1702 * SListBox::SetCurSel
1703 * @brief 设置选中项
1704 * @param int nIndex -- 待选中索引
1705 *
1706 * Describe 设置选中项
1707 */
1708 STDMETHOD_(BOOL, SetCurSel)(THIS_ int nIndex, BOOL bNotifyChange /* = FALSE*/) PURE;
1709
1710 /**
1711 * SListBox::GetTopIndex
1712 * @brief 获取第一条可见记录索引
1713 * @return 返回int
1714 *
1715 * Describe
1716 */
1717 STDMETHOD_(int, GetTopIndex)(CTHIS) SCONST PURE;
1718
1719 /**
1720 * SListBox::SetTopIndex
1721 * @brief 设置第一条可见记录索引
1722 * @param int nIndex -- 第一条可见记录索引
1723 *
1724 * Describe
1725 */
1726 STDMETHOD_(BOOL, SetTopIndex)(THIS_ int nIndex) PURE;
1727
1728 /**
1729 * SListBox::GetItemHeight
1730 * @brief 获取高度
1731 * @return 返回int
1732 *
1733 * Describe 获取高度
1734 */
1735 STDMETHOD_(int, GetItemHeight)(CTHIS) SCONST PURE;
1736
1737 /**
1738 * SListBox::SetItemHeight
1739 * @brief 设置指定项高度
1740 * @param int cyItemHeight -- 高度
1741 * @return 返回
1742 *
1743 * Describe 设置指定项高度
1744 */
1745 STDMETHOD_(void, SetItemHeight)(THIS_ int nItemHeight) PURE;
1746
1747 /**
1748 * SListBox::GetItemData
1749 * @brief 获取附加数据
1750 * @param int nIndex -- 选项索引
1751 * @return 返回LPARAM
1752 *
1753 * Describe 获取附加数据
1754 */
1755 STDMETHOD_(LPARAM, GetItemData)(CTHIS_ int nIndex) SCONST PURE;
1756
1757 /**
1758 * SListBox::SetItemData
1759 * @brief 设置选项附加数据
1760 * @param int nIndex -- 选项索引
1761 * @param LPARAM lParam -- 附加数据
1762 * @return 返回BOOL
1763 *
1764 * Describe 设置选项附加数据
1765 */
1766 STDMETHOD_(BOOL, SetItemData)(THIS_ int nIndex, LPARAM lParam) PURE;
1767
1768 /**
1769 * SListBox::GetText
1770 * @brief 获取指定项文本
1771 * @param int nIndex -- 选项索引
1772 * @param BOOL bRawText -- 原始数据标志
1773 * @return SStringT,列表项的原始字符串
1774 *
1775 * Describe 获取指定项文本
1776 */
1777 STDMETHOD_(BOOL, GetIText)
1778 (CTHIS_ int nIndex, BOOL bRawText /*= FALSE*/, IStringT *str) SCONST PURE;
1779
1780 /**
1781 * SListBox::DeleteAll
1782 * @brief 删除所有
1783 *
1784 * Describe 删除所有
1785 */
1786 STDMETHOD_(void, DeleteAll)(THIS) PURE;
1787
1788 /**
1789 * SListBox::DeleteString
1790 * @brief 设置指定项文本
1791 * @param int nIndex -- 选项索引
1792 * @return 返回BOOL
1793 *
1794 * Describe 设置指定项文本
1795 */
1796 STDMETHOD_(BOOL, DeleteString)(THIS_ int nIndex) PURE;
1797
1798 /**
1799 * SListBox::AddString
1800 * @brief 添加文本
1801 * @param LPCTSTR lpszItem -- 文本
1802 * @param int nImage -- 图标
1803 * @param LPARAM lParam -- 附加数据
1804 * @return 返回int 索引
1805 *
1806 * Describe 添加文本
1807 */
1808 STDMETHOD_(int, AddString)
1809 (THIS_ LPCTSTR lpszItem, int nImage /*= -1*/, LPARAM lParam /*= 0*/) PURE;
1810
1811 /**
1812 * SListBox::InsertString
1813 * @brief 插入文本
1814 * @param int nIndex -- 索引
1815 * @param LPCTSTR lpszItem -- 文本
1816 * @param int nImage -- 图标
1817 * @param LPARAM lParam -- 附加数据
1818 * @return 返回int 索引
1819 *
1820 * Describe 在某项插入文本
1821 */
1822 STDMETHOD_(int, InsertString)
1823 (THIS_ int nIndex, LPCTSTR lpszItem, int nImage /*= -1*/, LPARAM lParam /*= 0*/) PURE;
1824
1825 /**
1826 * SListBox::EnsureVisible
1827 * @brief 设置某项显示
1828 * @param int nIndex -- 索引
1829 *
1830 * Describe 设置某项显示
1831 */
1832 STDMETHOD_(void, EnsureVisible)(THIS_ int nIndex) PURE;
1833
1834 /**
1835 * @brief 查找字符串在列表中的位置
1836 * @param iFindAfter --开始索引
1837 * @param pszText --目标字符串
1838 * @return int 找到的索引,-1代表没有找到
1839 */
1840 STDMETHOD_(int, FindString)(CTHIS_ int iFindAfter, LPCTSTR pszText) SCONST PURE;
1841
1842 STDMETHOD_(BOOL, SetItemImage)(THIS_ int nIndex, int iImage) PURE;
1843
1844 STDMETHOD_(int, GetItemImage)(THIS_ int nIndex) PURE;
1845};
1846
1847// {5FB30471-54CB-4db8-9160-31B545E28BC5}
1848DEFINE_SGUID(IID_IComboBase, 0x5fb30471, 0x54cb, 0x4db8, 0x91, 0x60, 0x31, 0xb5, 0x45, 0xe2, 0x8b, 0xc5);
1849#undef INTERFACE
1850#define INTERFACE IComboBase
1851DECLARE_INTERFACE_(IComboBase, ICtrl)
1852{
1853 DECLARE_CLASS_SIID(IID_IComboBase)
1854 /**
1855 * @brief 增加引用计数
1856 * @return 新引用计数
1857 */
1858 STDMETHOD_(long, AddRef)(THIS) PURE;
1859
1860 /**
1861 * @brief 减少引用计数
1862 * @return 新引用计数
1863 */
1864 STDMETHOD_(long, Release)(THIS) PURE;
1865
1866 /**
1867 * @brief 释放对象
1868 * @return void
1869 */
1870 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1871
1872 //////////////////////////////////////////////////////////////////////////
1873
1874 /**
1875 * @brief 转换为IWindow*接口
1876 * @return IWindow*接口
1877 */
1878 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1879 //////////////////////////////////////////////////////////////////////////
1880 /**
1881 * SComboBoxBase::GetCurSel
1882 * @brief 获取选中值索引
1883 * @return 返回int
1884 *
1885 * Describe 获取当前选中索引
1886 */
1887 STDMETHOD_(int, GetCurSel)(CTHIS) SCONST PURE;
1888
1889 /**
1890 * SComboBoxBase::GetCount
1891 * @brief 获取下拉项个数
1892 * @return 返回int
1893 *
1894 * Describe 获取下拉项个数
1895 */
1896 STDMETHOD_(int, GetCount)(CTHIS) SCONST PURE;
1897
1898 /**
1899 * SComboBoxBase::SetCurSel
1900 * @brief 设置当前选中
1901 * @param int iSel -- 选中索引
1902 *
1903 * Describe 设置当前选中
1904 */
1905 STDMETHOD_(BOOL, SetCurSel)(THIS_ int iSel) PURE;
1906
1907 /**
1908 * @brief 获取指定项文本数据
1909 * @param iItem --索引号
1910 * @param bRawText --获取原始文本标志
1911 * @param[out] str 输出字符串对象
1912 * @return BOOL TRUE-成功
1913 * @remark bRawText为TRUE时输出未翻译的文本
1914 */
1915 STDMETHOD_(BOOL, GetItemText)(CTHIS_ int iItem, BOOL bRawText, IStringT *str) SCONST PURE;
1916 STDMETHOD_(BOOL, GetItemTextA)(CTHIS_ int iItem, BOOL bRawText, IStringA *str) SCONST PURE;
1917
1918 /**
1919 * FindString
1920 * @brief 查找字符串位置
1921 * @param LPCTSTR pszFind -- 查找目标
1922 * @param int nAfter -- 开始位置
1923 * @return int -- 目标索引,失败返回-1。
1924 * Describe
1925 */
1926 STDMETHOD_(int, FindString)
1927 (THIS_ LPCTSTR pszFind, int nAfter DEF_VAL(-1), BOOL bPartMatch DEF_VAL(TRUE)) PURE;
1928 STDMETHOD_(int, FindStringA)
1929 (THIS_ LPCSTR pszFind, int nAfter DEF_VAL(-1), BOOL bPartMatch DEF_VAL(TRUE)) PURE;
1930
1931 //////////////////////////////////////////////////////////////////////////
1932 /**
1933 * SComboBoxBase::DropDown
1934 * @brief 下拉事件
1935 *
1936 * Describe 下拉事件
1937 */
1938 STDMETHOD_(void, DropDown)(THIS) PURE;
1939
1940 /**
1941 * SComboBoxBase::CloseUp
1942 * @brief 下拉关闭
1943 *
1944 * Describe 下拉关闭
1945 */
1946 STDMETHOD_(void, CloseUp)(THIS) PURE;
1947
1948 /**
1949 * @brief 查询DropDown状态标志
1950 * @return TRUE-当前ComboBase为下拉列表
1951 * @remark 内部使用方法
1952 */
1953 STDMETHOD_(BOOL, IsDropdown)(CTHIS) SCONST PURE;
1954
1955 /**
1956 * @brief 设置下拉状态标志
1957 * @param bDropdown -- TRUE:下拉列表
1958 * @return
1959 * @remark 内部使用方法
1960 */
1961 STDMETHOD_(void, SetDropdown)(THIS_ BOOL bDropdown) PURE;
1962};
1963
1964// {E7F9C5A6-EA49-41c8-9D8F-7075CB9674EA}
1965DEFINE_SGUID(IID_IComboBox, 0xe7f9c5a6, 0xea49, 0x41c8, 0x9d, 0x8f, 0x70, 0x75, 0xcb, 0x96, 0x74, 0xea);
1966#undef INTERFACE
1967#define INTERFACE IComboBox
1968DECLARE_INTERFACE_(IComboBox, IComboBase)
1969{
1970 DECLARE_CLASS_SIID(IID_IComboBox)
1971 /**
1972 * @brief 增加引用计数
1973 * @return 新引用计数
1974 */
1975 STDMETHOD_(long, AddRef)(THIS) PURE;
1976
1977 /**
1978 * @brief 减少引用计数
1979 * @return 新引用计数
1980 */
1981 STDMETHOD_(long, Release)(THIS) PURE;
1982
1983 /**
1984 * @brief 释放对象
1985 * @return void
1986 */
1987 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
1988
1989 //////////////////////////////////////////////////////////////////////////
1990
1991 /**
1992 * @brief 转换为IWindow*接口
1993 * @return IWindow*接口
1994 */
1995 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
1996 //////////////////////////////////////////////////////////////////////////
1997 /**
1998 * SComboBoxBase::GetCurSel
1999 * @brief 获取选中值索引
2000 * @return 返回int
2001 *
2002 * Describe 获取当前选中索引
2003 */
2004 STDMETHOD_(int, GetCurSel)(CTHIS) SCONST PURE;
2005
2006 /**
2007 * SComboBoxBase::GetCount
2008 * @brief 获取下拉项个数
2009 * @return 返回int
2010 *
2011 * Describe 获取下拉项个数
2012 */
2013 STDMETHOD_(int, GetCount)(CTHIS) SCONST PURE;
2014
2015 /**
2016 * SComboBoxBase::SetCurSel
2017 * @brief 设置当前选中
2018 * @param int iSel -- 选中索引
2019 *
2020 * Describe 设置当前选中
2021 */
2022 STDMETHOD_(BOOL, SetCurSel)(THIS_ int iSel) PURE;
2023
2024 /**
2025 * @brief 获取指定项文本数据
2026 * @param iItem --索引号
2027 * @param bRawText --获取原始文本标志
2028 * @param[out] str 输出字符串对象
2029 * @return BOOL TRUE-成功
2030 * @remark bRawText为TRUE时输出未翻译的文本
2031 */
2032 STDMETHOD_(BOOL, GetItemText)(CTHIS_ int iItem, BOOL bRawText, IStringT *str) SCONST PURE;
2033
2034 STDMETHOD_(BOOL, GetItemTextA)(CTHIS_ int iItem, BOOL bRawText, IStringA *str) SCONST PURE;
2035
2036 /**
2037 * FindString
2038 * @brief 查找字符串位置
2039 * @param LPCTSTR pszFind -- 查找目标
2040 * @param int nAfter -- 开始位置
2041 * @return int -- 目标索引,失败返回-1。
2042 * Describe
2043 */
2044 STDMETHOD_(int, FindString)
2045 (THIS_ LPCTSTR pszFind, int nAfter DEF_VAL(-1), BOOL bPartMatch DEF_VAL(TRUE)) PURE;
2046 STDMETHOD_(int, FindStringA)
2047 (THIS_ LPCSTR pszFind, int nAfter DEF_VAL(-1), BOOL bPartMatch DEF_VAL(TRUE)) PURE;
2048
2049 /**
2050 * SComboBoxBase::DropDown
2051 * @brief 下拉事件
2052 *
2053 * Describe 下拉事件
2054 */
2055 STDMETHOD_(void, DropDown)(THIS) PURE;
2056
2057 /**
2058 * SComboBoxBase::CloseUp
2059 * @brief 下拉关闭
2060 *
2061 * Describe 下拉关闭
2062 */
2063 STDMETHOD_(void, CloseUp)(THIS) PURE;
2064
2065 /**
2066 * @brief 查询DropDown状态标志
2067 * @return TRUE-当前ComboBase为下拉列表
2068 * @remark 内部使用方法
2069 */
2070 STDMETHOD_(BOOL, IsDropdown)(CTHIS) SCONST PURE;
2071
2072 /**
2073 * @brief 设置下拉状态标志
2074 * @param bDropdown -- TRUE:下拉列表
2075 * @return
2076 * @remark 内部使用方法
2077 */
2078 STDMETHOD_(void, SetDropdown)(THIS_ BOOL bDropdown) PURE;
2079 //////////////////////////////////////////////////////////////////////////
2080
2081 /**
2082 * SComboBox::GetItemData
2083 * @brief 获取附加数据
2084 * @param UINT iItem -- 选项值
2085 *
2086 * Describe 获取附加数据
2087 */
2088 STDMETHOD_(LPARAM, GetItemData)(CTHIS_ UINT iItem) SCONST PURE;
2089
2090 /**
2091 * SComboBox::SetItemData
2092 * @brief 设置附加数据
2093 * @param UINT iItem -- 索引值
2094 * @param LPARAM lParam -- 附加值
2095 *
2096 * Describe 设置附加数据
2097 */
2098 STDMETHOD_(BOOL, SetItemData)(THIS_ UINT iItem, LPARAM lParam) PURE;
2099
2100 /**
2101 * SComboBox::InsertItem
2102 * @brief 插入新项
2103 * @param UINT iPos -- 位置
2104 * @param LPCTSTR pszText -- 文本值
2105 * @param int iIcon -- 图标
2106 * @param LPARAM lParam -- 附加值
2107 *
2108 * Describe 插入新项
2109 */
2110 STDMETHOD_(int, InsertItem)(THIS_ int iPos, LPCTSTR pszText, int iIcon, LPARAM lParam) PURE;
2111 STDMETHOD_(int, InsertItemA)(THIS_ int iPos, LPCSTR pszText, int iIcon, LPARAM lParam) PURE;
2112 /**
2113 * SComboBox::DeleteString
2114 * @brief 删除某一项
2115 * @param UINT iItem -- 索引值
2116 *
2117 * Describe 删除某一项
2118 */
2119 STDMETHOD_(BOOL, DeleteString)(THIS_ int iPos) PURE;
2120 /**
2121 * SComboBox::ResetContent
2122 * @brief 删除所有项
2123 *
2124 * Describe 设置附加数据
2125 */
2126 STDMETHOD_(void, ResetContent)(THIS) PURE;
2127
2128 /**
2129 * @brief 获取IListBox接口
2130 * @return IListBox *
2131 */
2132 STDMETHOD_(IListBox *, GetIListBox)(THIS) PURE;
2133};
2134
2135// {36DD3BAD-523B-421a-9311-3DD0F0BF06D1}
2136DEFINE_SGUID(IID_IComboView, 0x36dd3bad, 0x523b, 0x421a, 0x93, 0x11, 0x3d, 0xd0, 0xf0, 0xbf, 0x6, 0xd1);
2137#undef INTERFACE
2138#define INTERFACE IComboView
2139DECLARE_INTERFACE_(IComboView, IComboBase)
2140{
2141 DECLARE_CLASS_SIID(IID_IComboView)
2142 /**
2143 * @brief 增加引用计数
2144 * @return 新引用计数
2145 */
2146 STDMETHOD_(long, AddRef)(THIS) PURE;
2147
2148 /**
2149 * @brief 减少引用计数
2150 * @return 新引用计数
2151 */
2152 STDMETHOD_(long, Release)(THIS) PURE;
2153
2154 /**
2155 * @brief 释放对象
2156 * @return void
2157 */
2158 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
2159
2160 //////////////////////////////////////////////////////////////////////////
2161
2162 /**
2163 * @brief 转换为IWindow*接口
2164 * @return IWindow*接口
2165 */
2166 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
2167 //////////////////////////////////////////////////////////////////////////
2168 /**
2169 * SComboBoxBase::GetCurSel
2170 * @brief 获取选中值索引
2171 * @return 返回int
2172 *
2173 * Describe 获取当前选中索引
2174 */
2175 STDMETHOD_(int, GetCurSel)(CTHIS) SCONST PURE;
2176
2177 /**
2178 * SComboBoxBase::GetCount
2179 * @brief 获取下拉项个数
2180 * @return 返回int
2181 *
2182 * Describe 获取下拉项个数
2183 */
2184 STDMETHOD_(int, GetCount)(CTHIS) SCONST PURE;
2185
2186 /**
2187 * SComboBoxBase::SetCurSel
2188 * @brief 设置当前选中
2189 * @param int iSel -- 选中索引
2190 *
2191 * Describe 设置当前选中
2192 */
2193 STDMETHOD_(BOOL, SetCurSel)(THIS_ int iSel) PURE;
2194
2195 /**
2196 * @brief 获取指定项文本数据
2197 * @param iItem --索引号
2198 * @param bRawText --获取原始文本标志
2199 * @param[out] str 输出字符串对象
2200 * @return BOOL TRUE-成功
2201 * @remark bRawText为TRUE时输出未翻译的文本
2202 */
2203 STDMETHOD_(BOOL, GetItemText)(CTHIS_ int iItem, BOOL bRawText, IStringT *str) SCONST PURE;
2204
2205 /**
2206 * FindString
2207 * @brief 查找字符串位置
2208 * @param LPCTSTR pszFind -- 查找目标
2209 * @param int nAfter -- 开始位置
2210 * @return int -- 目标索引,失败返回-1。
2211 * Describe
2212 */
2213 STDMETHOD_(int, FindString)
2214 (THIS_ LPCTSTR pszFind, int nAfter /* = -1*/, BOOL bPartMatch /* = TRUE*/) PURE;
2215
2216 /**
2217 * SComboBoxBase::DropDown
2218 * @brief 下拉事件
2219 *
2220 * Describe 下拉事件
2221 */
2222 STDMETHOD_(void, DropDown)(THIS) PURE;
2223
2224 /**
2225 * SComboBoxBase::CloseUp
2226 * @brief 下拉关闭
2227 *
2228 * Describe 下拉关闭
2229 */
2230 STDMETHOD_(void, CloseUp)(THIS) PURE;
2231
2232 /**
2233 * @brief 查询DropDown状态标志
2234 * @return TRUE-当前ComboBase为下拉列表
2235 * @remark 内部使用方法
2236 */
2237 STDMETHOD_(BOOL, IsDropdown)(CTHIS) SCONST PURE;
2238
2239 /**
2240 * @brief 设置下拉状态标志
2241 * @param bDropdown -- TRUE:下拉列表
2242 * @return
2243 * @remark 内部使用方法
2244 */
2245 STDMETHOD_(void, SetDropdown)(THIS_ BOOL bDropdown) PURE;
2246 //////////////////////////////////////////////////////////////////////////
2247
2248 /**
2249 * @brief 获取ListView接口
2250 * @return IListView *
2251 */
2252 STDMETHOD_(IListView *, GetIListView)(THIS) PURE;
2253};
2254
2255// {846F25CD-E0DB-49b0-8F20-0BD70538F631}
2256DEFINE_SGUID(IID_IDateTimePicker, 0x846f25cd, 0xe0db, 0x49b0, 0x8f, 0x20, 0xb, 0xd7, 0x5, 0x38, 0xf6, 0x31);
2257#undef INTERFACE
2258#define INTERFACE IDateTimePicker
2259DECLARE_INTERFACE_(IDateTimePicker, ICtrl)
2260{
2261 DECLARE_CLASS_SIID(IID_IDateTimePicker)
2262 /**
2263 * @brief 增加引用计数
2264 * @return 新引用计数
2265 */
2266 STDMETHOD_(long, AddRef)(THIS) PURE;
2267
2268 /**
2269 * @brief 减少引用计数
2270 * @return 新引用计数
2271 */
2272 STDMETHOD_(long, Release)(THIS) PURE;
2273
2274 /**
2275 * @brief 释放对象
2276 * @return void
2277 */
2278 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
2279
2280 //////////////////////////////////////////////////////////////////////////
2281
2282 /**
2283 * @brief 转换为IWindow*接口
2284 * @return IWindow*接口
2285 */
2286 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
2287 //////////////////////////////////////////////////////////////////////////
2288
2289 /**
2290 * @brief 设置时间
2291 * @param wYear --年
2292 * @param wMonth --月
2293 * @param wDay --日
2294 * @param wHour --时
2295 * @param wMinute --分
2296 * @param wSecond --秒
2297 * @return
2298 */
2299 STDMETHOD_(void, SetTime)
2300 (THIS_ WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond) PURE;
2301
2302 /**
2303 * @brief 获取当前时间
2304 * @param[out] wYear --年
2305 * @param[out] wMonth --月
2306 * @param[out] wDay --日
2307 * @param[out] wHour --时
2308 * @param[out] wMinute --分
2309 * @param[out] wSecond --秒
2310 * @return
2311 */
2312 STDMETHOD_(void, GetTime)
2313 (CTHIS_ WORD * wYear, WORD * wMonth, WORD * wDay, WORD * wHour, WORD * wMinute, WORD * wSecond) SCONST PURE;
2314
2315 /**
2316 * @brief 关闭下拉列表
2317 * @return
2318 */
2319 STDMETHOD_(void, CloseUp)(THIS) PURE;
2320
2321 /**
2322 * @brief 显示下拉列表
2323 * @return
2324 */
2325 STDMETHOD_(void, DropDown)(THIS) PURE;
2326
2327 /**
2328 * @brief 清除数据
2329 * @return
2330 */
2331 STDMETHOD_(void, Clear)(THIS) PURE;
2332};
2333
2334typedef int(__cdecl *FunTreeSortCallback)(void *pCtx, const void *phItem1, const void *phItem2);
2335
2336#ifndef STVI_ROOT
2337#ifdef _WIN64
2338#define STVI_ROOT ((HSTREEITEM)0xFFFF000000000000) //=TVI_ROOT
2339#define STVI_FIRST ((HSTREEITEM)0xFFFF000000000001) //=TVI_FIRST
2340#define STVI_LAST ((HSTREEITEM)0xFFFF000000000002) //=TVI_LAST
2341#else
2342#define STVI_ROOT ((HSTREEITEM)0xFFFF0000) //=TVI_ROOT
2343#define STVI_FIRST ((HSTREEITEM)0xFFFF0001) //=TVI_FIRST
2344#define STVI_LAST ((HSTREEITEM)0xFFFF0002) //=TVI_LAST
2345#endif
2346#endif // STVI_ROOT
2347
2348// {A877B61C-7E5E-4716-8423-8DC61EAF61E9}
2349DEFINE_SGUID(IID_ITreeCtrl, 0xa877b61c, 0x7e5e, 0x4716, 0x84, 0x23, 0x8d, 0xc6, 0x1e, 0xaf, 0x61, 0xe9);
2350#undef INTERFACE
2351#define INTERFACE ITreeCtrl
2352DECLARE_INTERFACE_(ITreeCtrl, IPanel)
2353{
2354 DECLARE_CLASS_SIID(IID_ITreeCtrl)
2355 /**
2356 * @brief 增加引用计数
2357 * @return 新引用计数
2358 */
2359 STDMETHOD_(long, AddRef)(THIS) PURE;
2360
2361 /**
2362 * @brief 减少引用计数
2363 * @return 新引用计数
2364 */
2365 STDMETHOD_(long, Release)(THIS) PURE;
2366
2367 /**
2368 * @brief 释放对象
2369 * @return void
2370 */
2371 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
2372
2373 //////////////////////////////////////////////////////////////////////////
2374
2375 /**
2376 * @brief 转换为IWindow*接口
2377 * @return IWindow*接口
2378 */
2379 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
2380 //////////////////////////////////////////////////////////////////////////
2381
2382 /**
2383 * @brief 显示/隐藏滚动条
2384 * @param wBar 滚动条标志,see ScrollBarID
2385 * @param bShow TRUE-显示,FALSE-隐藏
2386 * @return
2387 */
2388 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
2389
2390 /**
2391 * @brief Enable/Disable滚动条
2392 * @param wBar 滚动条标志,see ScrollBarID
2393 * @param bShow TRUE-显示,FALSE-隐藏
2394 * @return
2395 */
2396 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
2397
2398 /**
2399 * @brief 获取滚动条Enable状态
2400 * @param bVertical -- TRUE-垂直滚动条
2401 * @return TRUE-enable
2402 */
2403 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
2404
2405 /**
2406 * @brief 设置滚动条数据
2407 * @param si --滚动条数据
2408 * @param bVertical -- TRUE-垂直滚动条
2409 * @return
2410 */
2411 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
2412
2413 /**
2414 * @brief 设置滚动条位置
2415 * @param bVertical -- TRUE-垂直滚动条
2416 * @param nNewPos -- 滚动位置
2417 * @param bRedraw -- 重绘标志
2418 * @return
2419 */
2420 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
2421
2422 /**
2423 * @brief 获取滚动条位置
2424 * @param bVertical -- TRUE-垂直滚动条
2425 * @return 滚动条位置
2426 */
2427 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
2428
2429 /**
2430 * @brief 设置滚动条范围
2431 * @param bVertical -- TRUE-垂直滚动条
2432 * @param nMinPos -- 最小值
2433 * @param nMaxPos -- 最大值
2434 * @param bRedraw -- 重绘标志
2435 * @return TRUE-成功
2436 */
2437 STDMETHOD_(BOOL, SetScrollRange)
2438 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
2439
2440 /**
2441 * @brief 获取滚动条范围
2442 * @param bVertical -- TRUE-垂直滚动条
2443 * @param lpMinPos -- 最小值
2444 * @param lpMaxPos -- 最大值
2445 * @return
2446 */
2447 STDMETHOD_(BOOL, GetScrollRange)
2448 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
2449
2450 /**
2451 * @brief 查询滚动条启用状态
2452 * @param bVertical -- TRUE-垂直滚动条
2453 * @return TRUE-启用
2454 */
2455 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
2456 //////////////////////////////////////////////////////////////////////////
2457
2458 /**
2459 * @brief 插入一个HSTREEITEM
2460 * @param lpszItem --显示文本
2461 * @param nImage --图片索引
2462 * @param nSelectedImage --选中状态的图片索引
2463 * @param lParam --自定义数据
2464 * @param hParent --父HSTREEITEM
2465 * @param hInsertAfter --前面的兄弟HSTREEITEM
2466 * @return HSTREEITEM--新插入HSTREEITEM
2467 */
2468 STDMETHOD_(HSTREEITEM, InsertItem)
2469 (THIS_ LPCTSTR lpszItem, int nImage, int nSelectedImage, LPARAM lParam, HSTREEITEM hParent DEF_VAL(STVI_ROOT), HSTREEITEM hInsertAfter DEF_VAL(STVI_LAST)) PURE;
2470
2471 STDMETHOD_(HSTREEITEM, InsertItemA)
2472 (THIS_ LPCSTR lpszItem, int nImage, int nSelectedImage, LPARAM lParam, HSTREEITEM hParent DEF_VAL(STVI_ROOT), HSTREEITEM hInsertAfter DEF_VAL(STVI_LAST)) PURE;
2473
2474 /**
2475 * @brief 删除一个HSTREEITEM
2476 * @param hItem --待删除HSTREEITEM
2477 * @return BOOL
2478 */
2479 STDMETHOD_(BOOL, RemoveItem)(THIS_ HSTREEITEM hItem) PURE;
2480
2481 /**
2482 * @brief 删除所有数据
2483 * @return
2484 */
2485 STDMETHOD_(void, RemoveAllItems)(THIS) PURE;
2486
2487 /**
2488 * @brief 获取根节点
2489 * @return HSTREEITEM --根节点
2490 */
2491 STDMETHOD_(HSTREEITEM, GetRootItem)(CTHIS) SCONST PURE;
2492
2493 /**
2494 * @brief 获取指定节点的下一个兄弟结点
2495 * @param hItem --指定节点
2496 * @return HSTREEITEM--下一个兄弟结点
2497 */
2498 STDMETHOD_(HSTREEITEM, GetNextSiblingItem)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2499
2500 /**
2501 * @brief 获取指定节点的上一个兄弟结点
2502 * @param hItem --指定节点
2503 * @return HSTREEITEM--上一个兄弟结点
2504 */
2505 STDMETHOD_(HSTREEITEM, GetPrevSiblingItem)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2506
2507 /**
2508 * @brief 获取指定结点的子节点
2509 * @param hItem --指定结点
2510 * @param bFirst -- TRUE:获取第一个子节点,FALSE:获取最后一个子节点
2511 * @return HSTREEITEM--子节点
2512 */
2513 STDMETHOD_(HSTREEITEM, GetChildItem)
2514 (CTHIS_ HSTREEITEM hItem, BOOL bFirst DEF_VAL(TRUE)) SCONST PURE;
2515
2516 /**
2517 * @brief 获取指定结点的父节点
2518 * @param hItem --指定结点
2519 * @return HSTREEITEM--父节点
2520 */
2521 STDMETHOD_(HSTREEITEM, GetParentItem)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2522
2523 /**
2524 * @brief 获取选中结点
2525 * @return HSTREEITEM--选中结点
2526 */
2527 STDMETHOD_(HSTREEITEM, GetSelectedItem)(CTHIS) SCONST PURE;
2528
2529 /**
2530 * @brief 获取下一个结点
2531 * @param hItem -- 当前结点
2532 * @return HSTREEITEM--下一个结点
2533 * @remark 有子节点时是第一个子节点,否则为下一个兄弟结点,也没有兄弟则是父节点的下一个兄弟
2534 */
2535 STDMETHOD_(HSTREEITEM, GetNextItem)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2536
2537 /**
2538 * @brief 排序子节点
2539 * @param hItem --当前节点
2540 * @param sortFunc --排序回调函数
2541 * @param pCtx --回调函数的Context
2542 * @return
2543 */
2544 STDMETHOD_(void, SortChildren)
2545 (THIS_ HSTREEITEM hItem, FunTreeSortCallback sortFunc, void *pCtx) PURE;
2546
2547 /**
2548 * @brief 选中指定项
2549 * @param hItem --指定项
2550 * @param bEnsureVisible --自动滚动到可见区标志
2551 * @return
2552 */
2553 STDMETHOD_(BOOL, SelectItem)(THIS_ HSTREEITEM hItem, BOOL bEnsureVisible DEF_VAL(TRUE)) PURE;
2554
2555 /**
2556 * @brief 获取指定项的文本数据
2557 * @param hItem --指定项
2558 * @param[out] strText --文本数据
2559 * @return BOOL
2560 * @remark 不支持翻译
2561 */
2562 STDMETHOD_(BOOL, GetItemText)(CTHIS_ HSTREEITEM hItem, IStringT * strText) SCONST PURE;
2563 STDMETHOD_(BOOL, GetItemTextA)(CTHIS_ HSTREEITEM hItem, IStringA * strText) SCONST PURE;
2564
2565 /**
2566 * @brief 设置文本数据
2567 * @param hItem --指定项
2568 * @param lpszItem --文本数据
2569 * @return BOOL
2570 */
2571 STDMETHOD_(BOOL, SetItemText)(THIS_ HSTREEITEM hItem, LPCTSTR lpszItem) PURE;
2572 STDMETHOD_(BOOL, SetItemTextA)(THIS_ HSTREEITEM hItem, LPCSTR lpszItem) PURE;
2573
2574 /**
2575 * @brief 获取指定项的图标显示数据
2576 * @param hItem --指定项
2577 * @param nImage --图片索引
2578 * @param nSelectedImage --选中状态图片索引
2579 * @return BOOL
2580 */
2581 STDMETHOD_(BOOL, GetItemImage)
2582 (CTHIS_ HSTREEITEM hItem, int *nImage, int *nSelectedImage) SCONST PURE;
2583
2584 /**
2585 * @brief 设置指定项的图片索引
2586 * @param hItem --指定项
2587 * @param nImage --图片索引
2588 * @param nSelectedImage --选中状态图片索引
2589 * @return BOOL
2590 */
2591 STDMETHOD_(BOOL, SetItemImage)(THIS_ HSTREEITEM hItem, int nImage, int nSelectedImage) PURE;
2592
2593 /**
2594 * @brief 获取指定项的自定义数据
2595 * @param hItem --指定项
2596 * @return LPARAM--自定义数据
2597 */
2598 STDMETHOD_(LPARAM, GetItemData)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2599
2600 /**
2601 * @brief 设置指定项的自定义数据
2602 * @param hItem --指定项
2603 * @param lParam --自定义数据
2604 * @return BOOL
2605 */
2606 STDMETHOD_(BOOL, SetItemData)(THIS_ HSTREEITEM hItem, LPARAM lParam) PURE;
2607
2608 /**
2609 * @brief 查询指定项是否有子项
2610 * @param hItem --指定项
2611 * @return BOOL TRUE:有子项
2612 */
2613 STDMETHOD_(BOOL, ItemHasChildren)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2614
2615 /**
2616 * @brief 获取指定项的Check状态
2617 * @param hItem --指定项
2618 * @return int 0--unchecked,1--checked,2--part checked
2619 */
2620 STDMETHOD_(int, GetCheckState)(CTHIS_ HSTREEITEM hItem) SCONST PURE;
2621
2622 /**
2623 * @brief 设置指定项的Check状态
2624 * @param hItem --指定项
2625 * @param bCheck --TRUE:checked
2626 * @return
2627 */
2628 STDMETHOD_(BOOL, SetCheckState)(THIS_ HSTREEITEM hItem, BOOL bCheck) PURE;
2629
2630 /**
2631 * @brief 展开或者收缩指定项的子项
2632 * @param hItem --指定项
2633 * @param nCode --标志位
2634 * @return
2635 */
2636 STDMETHOD_(BOOL, Expand)(THIS_ HSTREEITEM hItem, UINT nCode DEF_VAL(TVE_EXPAND)) PURE;
2637
2638 /**
2639 * @brief 使指定项滚动到可见区
2640 * @param hItem --指定项
2641 * @return
2642 */
2643 STDMETHOD_(BOOL, EnsureVisible)(THIS_ HSTREEITEM hItem) PURE;
2644};
2645
2646// {E21767AC-6A40-45a2-9E5C-EA5CDF516C60}
2647DEFINE_SGUID(IID_IHotKeyCtrl, 0xe21767ac, 0x6a40, 0x45a2, 0x9e, 0x5c, 0xea, 0x5c, 0xdf, 0x51, 0x6c, 0x60);
2648#undef INTERFACE
2649#define INTERFACE IHotKeyCtrl
2650DECLARE_INTERFACE_(IHotKeyCtrl, ICtrl)
2651{
2652 DECLARE_CLASS_SIID(IID_IHotKeyCtrl)
2653 /**
2654 * @brief 增加引用计数
2655 * @return 新引用计数
2656 */
2657 STDMETHOD_(long, AddRef)(THIS) PURE;
2658
2659 /**
2660 * @brief 减少引用计数
2661 * @return 新引用计数
2662 */
2663 STDMETHOD_(long, Release)(THIS) PURE;
2664
2665 /**
2666 * @brief 释放对象
2667 * @return void
2668 */
2669 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
2670
2671 //////////////////////////////////////////////////////////////////////////
2672
2673 /**
2674 * @brief 转换为IWindow*接口
2675 * @return IWindow*接口
2676 */
2677 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
2678 //////////////////////////////////////////////////////////////////////////
2679
2680 /**
2681 * SHotKeyCtrl::SetRule
2682 * @brief 设置规则
2683 * @param WORD wInvalidComp --
2684 * @param WORD wModifier --
2685 *
2686 * Describe 设置规则
2687 */
2688 STDMETHOD_(void, SetRule)(THIS_ WORD wInvalidComp, WORD wModifier) PURE;
2689
2690 /**
2691 * SHotKeyCtrl::SetHotKey
2692 * @brief 设置热键
2693 * @param WORD vKey --
2694 * @param WORD wModifiers --
2695 *
2696 * Describe 设置热键
2697 */
2698 STDMETHOD_(void, SetHotKey)(THIS_ WORD wKey, WORD wModifiers) PURE;
2699
2700 /**
2701 * SHotKeyCtrl::GetHotKey
2702 * @brief 获取热键
2703 * @param WORD &vKey --
2704 * @param WORD wModifiers --
2705 *
2706 * Describe 获取热键
2707 */
2708 STDMETHOD_(void, GetHotKey)(CTHIS_ WORD * wKey, WORD * wModifers) SCONST PURE;
2709};
2710
2711// {7B9C2C3E-3101-4cda-9436-F88D9993BA5F}
2712DEFINE_SGUID(IID_IRichEdit, 0x7b9c2c3e, 0x3101, 0x4cda, 0x94, 0x36, 0xf8, 0x8d, 0x99, 0x93, 0xba, 0x5f);
2713#undef INTERFACE
2714#define INTERFACE IRichEdit
2715DECLARE_INTERFACE_(IRichEdit, IPanel)
2716{
2717 DECLARE_CLASS_SIID(IID_IRichEdit)
2718 /**
2719 * @brief 增加引用计数
2720 * @return 新引用计数
2721 */
2722 STDMETHOD_(long, AddRef)(THIS) PURE;
2723
2724 /**
2725 * @brief 减少引用计数
2726 * @return 新引用计数
2727 */
2728 STDMETHOD_(long, Release)(THIS) PURE;
2729
2730 /**
2731 * @brief 释放对象
2732 * @return void
2733 */
2734 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
2735
2736 //////////////////////////////////////////////////////////////////////////
2737
2738 /**
2739 * @brief 转换为IWindow*接口
2740 * @return IWindow*接口
2741 */
2742 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
2743 //////////////////////////////////////////////////////////////////////////
2744
2745 /**
2746 * @brief 显示/隐藏滚动条
2747 * @param wBar 滚动条标志,see ScrollBarID
2748 * @param bShow TRUE-显示,FALSE-隐藏
2749 * @return
2750 */
2751 STDMETHOD_(BOOL, ShowScrollBar)(THIS_ int wBar, BOOL bShow) PURE;
2752
2753 /**
2754 * @brief Enable/Disable滚动条
2755 * @param wBar 滚动条标志,see ScrollBarID
2756 * @param bShow TRUE-显示,FALSE-隐藏
2757 * @return
2758 */
2759 STDMETHOD_(BOOL, EnableScrollBar)(THIS_ int wBar, BOOL bEnable) PURE;
2760
2761 /**
2762 * @brief 获取滚动条Enable状态
2763 * @param bVertical -- TRUE-垂直滚动条
2764 * @return TRUE-enable
2765 */
2766 STDMETHOD_(BOOL, IsScrollBarEnable)(CTHIS_ BOOL bVertical) SCONST PURE;
2767
2768 /**
2769 * @brief 设置滚动条数据
2770 * @param si --滚动条数据
2771 * @param bVertical -- TRUE-垂直滚动条
2772 * @return
2773 */
2774 STDMETHOD_(void, SetScrollInfo)(THIS_ SCROLLINFO si, BOOL bVertical) PURE;
2775
2776 /**
2777 * @brief 设置滚动条位置
2778 * @param bVertical -- TRUE-垂直滚动条
2779 * @param nNewPos -- 滚动位置
2780 * @param bRedraw -- 重绘标志
2781 * @return
2782 */
2783 STDMETHOD_(BOOL, SetScrollPos)(THIS_ BOOL bVertical, int nNewPos, BOOL bRedraw) PURE;
2784
2785 /**
2786 * @brief 获取滚动条位置
2787 * @param bVertical -- TRUE-垂直滚动条
2788 * @return 滚动条位置
2789 */
2790 STDMETHOD_(int, GetScrollPos)(CTHIS_ BOOL bVertical) SCONST PURE;
2791
2792 /**
2793 * @brief 设置滚动条范围
2794 * @param bVertical -- TRUE-垂直滚动条
2795 * @param nMinPos -- 最小值
2796 * @param nMaxPos -- 最大值
2797 * @param bRedraw -- 重绘标志
2798 * @return TRUE-成功
2799 */
2800 STDMETHOD_(BOOL, SetScrollRange)
2801 (THIS_ BOOL bVertical, int nMinPos, int nMaxPos, BOOL bRedraw) PURE;
2802
2803 /**
2804 * @brief 获取滚动条范围
2805 * @param bVertical -- TRUE-垂直滚动条
2806 * @param lpMinPos -- 最小值
2807 * @param lpMaxPos -- 最大值
2808 * @return
2809 */
2810 STDMETHOD_(BOOL, GetScrollRange)
2811 (CTHIS_ BOOL bVertical, LPINT lpMinPos, LPINT lpMaxPos) SCONST PURE;
2812
2813 /**
2814 * @brief 查询滚动条启用状态
2815 * @param bVertical -- TRUE-垂直滚动条
2816 * @return TRUE-启用
2817 */
2818 STDMETHOD_(BOOL, HasScrollBar)(CTHIS_ BOOL bVertical) SCONST PURE;
2819 //////////////////////////////////////////////////////////////////////////
2820
2821 /**
2822 * IRichEdit::SaveRtf
2823 * @brief 保存数据到RTF文件
2824 * @param LPCTSTR pszFileName -- 文件名
2825 * @return DWORD 数据长度
2826 *
2827 * Describe
2828 */
2829 STDMETHOD_(DWORD, SaveRtf)(THIS_ LPCTSTR pszFileName) PURE;
2830
2831 /**
2832 * IRichEdit::LoadRtf
2833 * @brief 从RTF文件加载数据
2834 * @param LPCTSTR pszFileName -- 文件名
2835 * @return DWORD 数据长度
2836 *
2837 * Describe
2838 */
2839 STDMETHOD_(DWORD, LoadRtf)(THIS_ LPCTSTR pszFileName) PURE;
2840
2841 /**
2842 * IRichEdit::SetSel
2843 * @brief 设置选中
2844 * @param long nStartChar -- 开始字符索引
2845 * @param long nEndChar -- 结束字符索引
2846 * @param BOOL bNoScroll -- 禁止滚动标志
2847 *
2848 * Describe 设置选中, 支持超长文本
2849 */
2850 STDMETHOD_(void, SetSel)(THIS_ long nStartChar, long nEndChar, BOOL bNoScroll) PURE;
2851 /**
2852 * IRichEdit::ReplaceSel
2853 * @brief 替换选中项
2854 * @param LPCWSTR pszText -- 替换数据
2855 * @param BOOL bCanUndo -- 允许Undo标志
2856 *
2857 * Describe 替换选中项
2858 */
2859 STDMETHOD_(void, ReplaceSel)(THIS_ LPCTSTR pszText, BOOL bCanUndo DEF_VAL(TRUE)) PURE;
2860 /**
2861 * IRichEdit::GetWordWrap
2862 * @brief
2863 * @return 返回BOOL
2864 *
2865 * Describe
2866 */
2867 STDMETHOD_(BOOL, GetWordWrap)(CTHIS) SCONST PURE;
2868 /**
2869 * IRichEdit::SetWordWrap
2870 * @brief
2871 * @param BOOL fWordWrap -- word wrap标志
2872 *
2873 * Describe
2874 */
2875 STDMETHOD_(void, SetWordWrap)(THIS_ BOOL fWordWrap) PURE;
2876
2877 /**
2878 * IRichEdit::GetReadOnly
2879 * @brief 判断是否只读
2880 * @return 返回BOOL
2881 *
2882 * Describe 判断是否只读
2883 */
2884 STDMETHOD_(BOOL, GetReadOnly)(CTHIS) SCONST PURE;
2885
2886 /**
2887 * IRichEdit::SetReadOnly
2888 * @brief 设置只读
2889 * @param BOOL bReadOnly -- 是否只读
2890 * @return 返回BOOL
2891 *
2892 * Describe 设置只读
2893 */
2894 STDMETHOD_(BOOL, SetReadOnly)(THIS_ BOOL bReadOnly) PURE;
2895
2896 /**
2897 * IRichEdit::GetLimitText
2898 * @brief 获取最小文本长度
2899 * @return 返回BOOL
2900 *
2901 * Describe 获取最小文本长度
2902 */
2903 STDMETHOD_(LONG, GetLimitText)(CTHIS) SCONST PURE;
2904
2905 /**
2906 * IRichEdit::SetLimitText
2907 * @brief 设置最小文本长度
2908 * @param int nLength -- 长度
2909 * @return 返回BOOL
2910 *
2911 * Describe 设置最小文本长度
2912 */
2913 STDMETHOD_(BOOL, SetLimitText)(THIS_ int nLength) PURE;
2914
2915 /**
2916 * IRichEdit::GetDefaultAlign
2917 * @brief 获取对齐方式
2918 * @return 返回WORD
2919 *
2920 * Describe 设置最小文本长度
2921 */
2922 STDMETHOD_(WORD, GetDefaultAlign)(CTHIS) SCONST PURE;
2923
2924 /**
2925 * IRichEdit::SetDefaultAlign
2926 * @brief 设置默认对齐方式
2927 * @param WORD wNewAlign -- 对齐方式
2928 *
2929 * Describe 设置默认对齐方式
2930 */
2931 STDMETHOD_(void, SetDefaultAlign)(THIS_ WORD wNewAlign) PURE;
2932
2933 /**
2934 * IRichEdit::GetRichTextFlag
2935 * @brief 获取标志
2936 * @return 返回BOOL
2937 *
2938 * Describe 获取标志
2939 */
2940 STDMETHOD_(BOOL, GetRichTextFlag)(CTHIS) SCONST PURE;
2941
2942 /**
2943 * IRichEdit::SetRichTextFlag
2944 * @brief 设置标志
2945 * @param BOOL fRich -- 标志
2946 *
2947 * Describe 设置标志
2948 */
2949 STDMETHOD_(void, SetRichTextFlag)(THIS_ BOOL fRich) PURE;
2950
2951 /**
2952 * IRichEdit::SetRichTextFlag
2953 * @brief 设置标志
2954 * @param BOOL fRich -- 标志
2955 * @return 返回LONG
2956 *
2957 * Describe 设置标志
2958 */
2959 STDMETHOD_(LONG, GetDefaultLeftIndent)(CTHIS) SCONST PURE;
2960
2961 /**
2962 * IRichEdit::SetDefaultLeftIndent
2963 * @brief 设置缩进
2964 * @param LONG lNewIndent -- 缩进字符数
2965 *
2966 * Describe 设置缩进
2967 */
2968 STDMETHOD_(void, SetDefaultLeftIndent)(THIS_ LONG lNewIndent) PURE;
2969
2970 /**
2971 * IRichEdit::SetSaveSelection
2972 * @brief
2973 * @param BOOL fSaveSelection
2974 * @return 返回BOOL
2975 *
2976 * Describe
2977 */
2978 STDMETHOD_(BOOL, SetSaveSelection)(THIS_ BOOL fSaveSelection) PURE;
2979
2980 /**
2981 * IRichEdit::SetDefaultTextColor
2982 * @brief 默认文本颜色
2983 * @param COLORREF cr -- 颜色
2984 * @return 返回COLORREF
2985 *
2986 * Describe 设置默认文本颜色
2987 */
2988 STDMETHOD_(COLORREF, SetDefaultTextColor)(THIS_ COLORREF cr) PURE;
2989};
2990
2991// {A32ED365-E6B8-4ada-BE49-BCF127F94427}
2992DEFINE_SGUID(IID_ITabPage, 0xa32ed365, 0xe6b8, 0x4ada, 0xbe, 0x49, 0xbc, 0xf1, 0x27, 0xf9, 0x44, 0x27);
2993#undef INTERFACE
2994#define INTERFACE ITabPage
2995DECLARE_INTERFACE_(ITabPage, ICtrl)
2996{
2997 DECLARE_CLASS_SIID(IID_ITabPage)
2998 /**
2999 * @brief 增加引用计数
3000 * @return 新引用计数
3001 */
3002 STDMETHOD_(long, AddRef)(THIS) PURE;
3003
3004 /**
3005 * @brief 减少引用计数
3006 * @return 新引用计数
3007 */
3008 STDMETHOD_(long, Release)(THIS) PURE;
3009
3010 /**
3011 * @brief 释放对象
3012 * @return void
3013 */
3014 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3015
3016 //////////////////////////////////////////////////////////////////////////
3017
3018 /**
3019 * @brief 转换为IWindow*接口
3020 * @return IWindow*接口
3021 */
3022 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3023
3024 //////////////////////////////////////////////////////////////////////////
3025
3026 /**
3027 * GetTitle
3028 * @brief 获取标题
3029 * @return LPCTSTR --- 标题
3030 *
3031 * Describe 获取标题
3032 */
3033 STDMETHOD_(LPCTSTR, GetTitle)(CTHIS) SCONST PURE;
3034
3035 /**
3036 * SetTitle
3037 * @brief 设置标题
3038 * @param LPCTSTR lpszTitle --- 标题
3039 *
3040 * Describe 设置标题
3041 */
3042 STDMETHOD_(void, SetTitle)(THIS_ LPCTSTR lpszTitle) PURE;
3043
3044 /**
3045 * GetIconIndex
3046 * @brief 获取图标索引
3047 * @return int, 图标索引
3048 */
3049 STDMETHOD_(int, GetIconIndex)(CTHIS) SCONST PURE;
3050
3051 /**
3052 * SetIconIndex
3053 * @brief 设置图标索引
3054 * @param int iIcon -- 图标索引
3055 * @return void
3056 */
3057 STDMETHOD_(void, SetIconIndex)(THIS_ int iIcon) PURE;
3058};
3059
3060// {17714866-88B9-480b-83D1-F044486D78D1}
3061DEFINE_SGUID(IID_ITabCtrl, 0x17714866, 0x88b9, 0x480b, 0x83, 0xd1, 0xf0, 0x44, 0x48, 0x6d, 0x78, 0xd1);
3062#undef INTERFACE
3063#define INTERFACE ITabCtrl
3064DECLARE_INTERFACE_(ITabCtrl, ICtrl)
3065{
3066 DECLARE_CLASS_SIID(IID_ITabCtrl)
3067 /**
3068 * @brief 增加引用计数
3069 * @return 新引用计数
3070 */
3071 STDMETHOD_(long, AddRef)(THIS) PURE;
3072
3073 /**
3074 * @brief 减少引用计数
3075 * @return 新引用计数
3076 */
3077 STDMETHOD_(long, Release)(THIS) PURE;
3078
3079 /**
3080 * @brief 释放对象
3081 * @return void
3082 */
3083 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3084
3085 //////////////////////////////////////////////////////////////////////////
3086
3087 /**
3088 * @brief 转换为IWindow*接口
3089 * @return IWindow*接口
3090 */
3091 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3092 //////////////////////////////////////////////////////////////////////////
3093
3094 /**
3095 * ITabCtrl::GetCurSel
3096 * @brief 获取当前选中
3097 * @return 返回int
3098 *
3099 * Describe 获取当前选中
3100 */
3101 STDMETHOD_(int, GetCurSel)(CTHIS) SCONST PURE;
3102
3103 /**
3104 * ITabCtrl::SetCurSel
3105 * @brief 设置当前选中
3106 * @param int nIndex -- 索引
3107 * @return 返回BOOL
3108 *
3109 * Describe 获取当前选中
3110 */
3111 STDMETHOD_(BOOL, SetCurSel)(THIS_ int nIndex) PURE;
3112
3113 /**
3114 * ITabCtrl::SetItemTitle
3115 * @brief 设置标题
3116 * @param int nIndex -- 索引
3117 * @param LPCTSTR lpszTitle -- 标题
3118 * @return 返回BOOL
3119 *
3120 * Describe 获取当前选中
3121 */
3122 STDMETHOD_(BOOL, SetItemTitle)(THIS_ int nIndex, LPCTSTR lpszTitle) PURE;
3123
3124 /**
3125 * ITabCtrl::InsertItem
3126 * @brief 插入tab页面
3127 * @param LPCWSTR lpContent -- XML描述的page信息
3128 * @param int iInsert -- 位置
3129 * @return 返回插入位置
3130 *
3131 * Describe 插入tab页面
3132 */
3133 STDMETHOD_(int, InsertItem)(THIS_ LPCWSTR lpContent, int iInsert DEF_VAL(-1)) PURE;
3134
3135 /**
3136 * ITabCtrl::GetItemCount
3137 * @brief 获取tab页面数
3138 * @return 返回int
3139 *
3140 * Describe 获取tab页面数
3141 */
3142 STDMETHOD_(int, GetItemCount)(CTHIS) SCONST PURE;
3143
3144 /**
3145 * ITabCtrl::GetItem
3146 * @brief 获取指定tab页面
3147 * @param int nIndex -- 索引
3148 * @return 返回int
3149 *
3150 * Describe 获取当前选中
3151 */
3152 STDMETHOD_(IWindow *, GetPage)(THIS_ int nIndex) PURE;
3153
3154 /**
3155 * ITabCtrl::RemoveItem
3156 * @brief 删除指定tab页面
3157 * @param int nIndex -- 索引
3158 * @param int nSelPage -- 选中页面
3159 * @return 删除指定tab页面
3160 *
3161 * Describe 获取当前选中
3162 */
3163 STDMETHOD_(BOOL, RemoveItem)(THIS_ int nIndex, int iSelPage DEF_VAL(0)) PURE;
3164
3165 /**
3166 * ITabCtrl::RemoveAllItems
3167 * @brief 删除所有页面
3168 *
3169 * Describe 删除所有页面
3170 */
3171 STDMETHOD_(void, RemoveAllItems)(THIS) PURE;
3172
3173 /**
3174 * ITabCtrl::GetPageIndex
3175 * @brief 获取指定页面的索引
3176 * @param LPCTSTR pszName -- 查询字符串
3177 * @param BOOL bTitle --
3178 * TRUE:pszName代表的是page的title属性,FALSE:pszName代表的是page的name属性
3179 * @return 找到的页面索引号
3180 *
3181 * Describe
3182 */
3183 STDMETHOD_(int, GetPageIndex)(THIS_ LPCTSTR pszName, BOOL bTitle) PURE;
3184};
3185
3186// {71CCB156-39DD-4eee-842C-C8363368AF30}
3187DEFINE_SGUID(IID_IEdit, 0x71ccb156, 0x39dd, 0x4eee, 0x84, 0x2c, 0xc8, 0x36, 0x33, 0x68, 0xaf, 0x30);
3188#undef INTERFACE
3189#define INTERFACE IEdit
3190DECLARE_INTERFACE_(IEdit, ICtrl)
3191{
3192 DECLARE_CLASS_SIID(IID_IEdit)
3193 /**
3194 * @brief 增加引用计数
3195 * @return 新引用计数
3196 */
3197 STDMETHOD_(long, AddRef)(THIS) PURE;
3198
3199 /**
3200 * @brief 减少引用计数
3201 * @return 新引用计数
3202 */
3203 STDMETHOD_(long, Release)(THIS) PURE;
3204
3205 /**
3206 * @brief 释放对象
3207 * @return void
3208 */
3209 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3210
3211 //////////////////////////////////////////////////////////////////////////
3212
3213 /**
3214 * @brief 转换为IWindow*接口
3215 * @return IWindow*接口
3216 */
3217 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3218 //////////////////////////////////////////////////////////////////////////
3219
3220 /**
3221 * @brief 获取提示字符串
3222 * @param[out] IStringT *pStr--提示字符串
3223 * @return void
3224 * @remark 设置使用SetAttribute
3225 */
3226 STDMETHOD_(void, GetCueText)(CTHIS_ IStringT * pStr) SCONST PURE;
3227
3228 /**
3229 * @brief 获取提示字符串颜色
3230 * @return COLORREF--提示字符串颜色
3231 * @remark 设置使用SetAttribute
3232 */
3233 STDMETHOD_(COLORREF, GetCueColor)(CTHIS) SCONST PURE;
3234};
3235
3236// {7F8DF81C-6C6E-4572-BDE6-0757A4D07C5F}
3237DEFINE_SGUID(IID_ISpinButtonCtrl, 0x7f8df81c, 0x6c6e, 0x4572, 0xbd, 0xe6, 0x7, 0x57, 0xa4, 0xd0, 0x7c, 0x5f);
3238#undef INTERFACE
3239#define INTERFACE ISpinButtonCtrl
3240DECLARE_INTERFACE_(ISpinButtonCtrl, ICtrl)
3241{
3242 DECLARE_CLASS_SIID(IID_ISpinButtonCtrl)
3243 /**
3244 * @brief 增加引用计数
3245 * @return 新引用计数
3246 */
3247 STDMETHOD_(long, AddRef)(THIS) PURE;
3248
3249 /**
3250 * @brief 减少引用计数
3251 * @return 新引用计数
3252 */
3253 STDMETHOD_(long, Release)(THIS) PURE;
3254
3255 /**
3256 * @brief 释放对象
3257 * @return void
3258 */
3259 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3260
3261 //////////////////////////////////////////////////////////////////////////
3262
3263 /**
3264 * @brief 转换为IWindow*接口
3265 * @return IWindow*接口
3266 */
3267 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3268 //////////////////////////////////////////////////////////////////////////
3269
3270 /**
3271 * @brief 设置值
3272 * @param nValue --新值
3273 * @return
3274 */
3275 STDMETHOD_(void, SetValue)(THIS_ int nValue) PURE;
3276
3277 /**
3278 * @brief 设置范围
3279 * @param nMin --最小值
3280 * @param nMax --最大值
3281 * @return
3282 */
3283 STDMETHOD_(void, SetRange)(THIS_ int nMin, int nMax) PURE;
3284
3285 /**
3286 * @brief 设置步长
3287 * @param nStep --步长
3288 * @return
3289 */
3290 STDMETHOD_(void, SetStep)(THIS_ UINT nStep) PURE;
3291
3292 /**
3293 * @brief 获取值
3294 * @return int --当前值
3295 */
3296 STDMETHOD_(int, GetValue)(CTHIS) SCONST PURE;
3297
3298 /**
3299 * @brief 获取关联的窗口对象
3300 * @return IWindow *--关联的窗口对象
3301 */
3302 STDMETHOD_(IWindow *, GetIBuddy)(CTHIS) SCONST PURE;
3303};
3304
3305// {80E930E7-BFC2-4e5e-8FFC-A2F0B4EC24E9}
3306DEFINE_SGUID(IID_IIconWnd, 0x80e930e7, 0xbfc2, 0x4e5e, 0x8f, 0xfc, 0xa2, 0xf0, 0xb4, 0xec, 0x24, 0xe9);
3307#undef INTERFACE
3308#define INTERFACE IIconWnd
3309DECLARE_INTERFACE_(IIconWnd, ICtrl)
3310{
3311 DECLARE_CLASS_SIID(IID_IIconWnd)
3312 /**
3313 * @brief 增加引用计数
3314 * @return 新引用计数
3315 */
3316 STDMETHOD_(long, AddRef)(THIS) PURE;
3317
3318 /**
3319 * @brief 减少引用计数
3320 * @return 新引用计数
3321 */
3322 STDMETHOD_(long, Release)(THIS) PURE;
3323
3324 /**
3325 * @brief 释放对象
3326 * @return void
3327 */
3328 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3329
3330 //////////////////////////////////////////////////////////////////////////
3331
3332 /**
3333 * @brief 转换为IWindow*接口
3334 * @return IWindow*接口
3335 */
3336 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3337
3338 //////////////////////////////////////////////////////////////////////////
3339
3340 /**
3341 * @brief SetIcon
3342 * @param HICON hIcon -- 图标资源句柄
3343 * @return void
3344 *
3345 * Describe 图标资源
3346 */
3347 STDMETHOD_(void, SetIcon)(THIS_ HICON hIcon) PURE;
3348};
3349
3350// {EDFF5B4F-8BF0-46fb-9399-C91859D5A1BC}
3351DEFINE_SGUID(IID_IRealWnd, 0xedff5b4f, 0x8bf0, 0x46fb, 0x93, 0x99, 0xc9, 0x18, 0x59, 0xd5, 0xa1, 0xbc);
3352#undef INTERFACE
3353#define INTERFACE IRealWnd
3354DECLARE_INTERFACE_(IRealWnd, ICtrl)
3355{
3356 DECLARE_CLASS_SIID(IID_IRealWnd)
3357 /**
3358 * @brief 增加引用计数
3359 * @return 新引用计数
3360 */
3361 STDMETHOD_(long, AddRef)(THIS) PURE;
3362
3363 /**
3364 * @brief 减少引用计数
3365 * @return 新引用计数
3366 */
3367 STDMETHOD_(long, Release)(THIS) PURE;
3368
3369 /**
3370 * @brief 释放对象
3371 * @return void
3372 */
3373 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3374
3375 //////////////////////////////////////////////////////////////////////////
3376
3377 /**
3378 * @brief 转换为IWindow*接口
3379 * @return IWindow*接口
3380 */
3381 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3382
3383 //////////////////////////////////////////////////////////////////////////
3384
3385 STDMETHOD_(const IStringT *, GetRealClassName)(CTHIS) SCONST PURE;
3386
3387 STDMETHOD_(const IStringT *, GetRealWindowName)(CTHIS) SCONST PURE;
3388
3389 STDMETHOD_(DWORD, GetRealStyle)(CTHIS) SCONST PURE;
3390
3391 STDMETHOD_(DWORD, GetRealStyleEx)(CTHIS) SCONST PURE;
3392
3393 STDMETHOD_(IXmlNode *, GetRealParam)(CTHIS) PURE;
3394
3395 /**
3396 * SRealWnd::GetRealHwnd
3397 * @brief 获取窗口句柄
3398 * @param BOOL bAutoCreate -- 自动创建
3399 * @return 返回HWND
3400 *
3401 * Describe 获取窗口句柄
3402 */
3403 STDMETHOD_(HWND, GetRealHwnd)(THIS_ BOOL bAutoCreate DEF_VAL(TRUE)) PURE;
3404
3405 /**
3406 * SRealWnd::SetData
3407 * @brief 获取附加数据
3408 * @param LPVOID lpData -- 附加数据
3409 *
3410 * Describe 获取附加数据
3411 */
3412 STDMETHOD_(void, SetData)(THIS_ LPVOID lpData) PURE;
3413
3414 /**
3415 * SRealWnd::GetData
3416 * @brief 获取附加数据
3417 * @return 返回LPVOID
3418 *
3419 * Describe 获取附加数据
3420 */
3421 STDMETHOD_(LPVOID, GetData)(THIS) PURE;
3422};
3423
3424typedef enum _StackViewAniStyle
3425{
3426 kAniNone = 0,
3427 kFadeInOut,
3428 kMoveInOut,
3429 kPushInOut
3430} StackViewAniStyle;
3431
3432// {59D1145E-C906-404e-8128-29C7CC80E3DC}
3433DEFINE_SGUID(IID_IStackView, 0x59d1145e, 0xc906, 0x404e, 0x81, 0x28, 0x29, 0xc7, 0xcc, 0x80, 0xe3, 0xdc);
3434#undef INTERFACE
3435#define INTERFACE IStackView
3436DECLARE_INTERFACE_(IStackView, ICtrl)
3437{
3438 DECLARE_CLASS_SIID(IID_IStackView)
3439 /**
3440 * @brief 增加引用计数
3441 * @return 新引用计数
3442 */
3443 STDMETHOD_(long, AddRef)(THIS) PURE;
3444
3445 /**
3446 * @brief 减少引用计数
3447 * @return 新引用计数
3448 */
3449 STDMETHOD_(long, Release)(THIS) PURE;
3450
3451 /**
3452 * @brief 释放对象
3453 * @return void
3454 */
3455 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
3456
3457 //////////////////////////////////////////////////////////////////////////
3458
3459 /**
3460 * @brief 转换为IWindow*接口
3461 * @return IWindow*接口
3462 */
3463 STDMETHOD_(IWindow *, ToIWindow)(THIS) PURE;
3464
3465 //////////////////////////////////////////////////////////////////////////
3466
3467 STDMETHOD_(BOOL, SelectPage)(THIS_ int iView, BOOL enableAnimate DEF_VAL(TRUE)) PURE;
3468 STDMETHOD_(void, SetAniStyle)(THIS_ StackViewAniStyle aniStyle) PURE;
3469 STDMETHOD_(void, SetAniDir)(THIS_ BOOL bVert) PURE;
3470 STDMETHOD_(IWindow *, GetSelPage)(CTHIS) SCONST PURE;
3471 STDMETHOD_(IWindow *, GetPage)(CTHIS_ int iPage) SCONST PURE;
3472};
3473
3474SNSEND
3475#endif // __SCTRL_I__H__
Interface for Skin Objects.
#define STVI_ROOT
Definition STree.h:43
#define STVI_LAST
Definition STree.h:45
Bitmap object interface.
Definition SRender-i.h:420
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