14#include <interface/SEvtArgs-i.h> 
   15#include <interface/sstring-i.h> 
   18#include <sobject/Sobject.hpp> 
   19#include <helper/obj-ref-impl.hpp> 
   24typedef struct IWindow IWindow;
 
  175class SOUI_EXP SEvtArgs : 
public TObjRefImpl<SObjectImpl<IEvtArgs>> {
 
  176    DEF_SOBJECT(SObjectImpl<IEvtArgs>, L
"event")
 
  189    STDMETHOD_(IObject *, Sender)(THIS)
 
  198    STDMETHOD_(
int, IdFrom)(THIS) SCONST
 
  207    STDMETHOD_(
void, SetIdFrom)(THIS_ 
int id)
 
  216    STDMETHOD_(LPCWSTR, NameFrom)(THIS) SCONST
 
  225    STDMETHOD_(
void, SetNameFrom)(THIS_ LPCWSTR name)
 
  234    STDMETHOD_(BOOL, IsBubbleUp)(THIS) SCONST
 
  243    STDMETHOD_(
void, SetBubbleUp)(THIS_ BOOL bSet)
 
  252    STDMETHOD_(UINT, HandleCount)(THIS) SCONST
 
  260    STDMETHOD_(
void, IncreaseHandleCount)(THIS)
 
  269    STDMETHOD_(LPVOID, Data)(THIS)
 
  279    SEvtArgs(IObject *pSender)
 
  286            idFrom = sender->GetID();
 
  287            nameFrom = sender->GetName();
 
  311#define DEF_EVT_CLASS(evt, id, evt_name, evtData, api) \ 
  315        DEF_SOBJECT(SEvtArgs, WIDESTR(evt_name))       \ 
  317        STDMETHOD_(int, GetID)(THIS) const             \ 
  319            return evt::EventID;                       \ 
  321        STDMETHOD_(LPCWSTR, GetName)(THIS) const       \ 
  323            return evt::GetClassName();                \ 
  325        STDMETHOD_(LPVOID, Data)(THIS)                 \ 
  327            return (evtData *)this;                    \ 
  333        evt(SNS::IObject *pSender = NULL)              \ 
  334            : SEvtArgs(pSender)                        \ 
  339#define EVENTID(x) x::EventID, x::GetClassName() 
  343#define DEF_EVT_STRUCT(n, x) typedef struct n x n; 
  346#define DEF_EVENT(evt, id, name, x, api) \ 
  347    DEF_EVT_STRUCT(St##evt, x)           \ 
  348    DEF_EVT_CLASS(evt, id, name, St##evt, api) 
  350#define DEF_EVENT(evt, id, name, x, api) DEF_EVT_STRUCT(St##evt, x) 
  353#define DEF_EVT(evt, id, name, x) DEF_EVENT(evt, id, name, x, SOUI_EXP) 
  354#define DEF_EVT_EXT(evt, id, x)   DEF_EVENT(evt, id, on_##evt, x, ) 
  356DEF_EVT(EventInit, 
EVT_INIT, on_init, { 
int fake; })
 
  358DEF_EVT(EventExit, 
EVT_EXIT, on_exit, { 
int fake; })
 
  360DEF_EVT(EventTimer, 
EVT_TIMER, on_timer, {
 
  365DEF_EVT(EventGetCaret, 
EVT_GET_CARET, on_get_caret, { IStringW *strCaret; })
 
  379DEF_EVT(EventSwndCreate, 
EVT_CREATE, on_create, { 
int fake; })
 
  380DEF_EVT(EventSwndInitFinish, 
EVT_INIT_FINISH, on_init_finish, { 
int fake; })
 
  381DEF_EVT(EventSwndDestroy, 
EVT_DESTROY, on_destroy, { 
int fake; })
 
  383DEF_EVT(EventSwndSize, 
EVT_SIZE, on_size, { SIZE szWnd; })
 
  384DEF_EVT(EventSwndPos, 
EVT_POS, on_pos, { RECT rcWnd; })
 
  398inline BOOL EventSwndStateChanged_CheckState(EventSwndStateChanged *pEvt, DWORD dwState)
 
  400    return (pEvt->dwOldState & dwState) != (pEvt->dwNewState & dwState);
 
  404DEF_EVT(EventSwndCaptureChanged, 
EVT_CAPTURECHANGED, on_capture_changed, { BOOL bCaptured; })
 
  406DEF_EVT(EventSwndVisibleChanged, 
EVT_VISIBLECHANGED, on_visible_changed, { BOOL bVisible; })
 
  408DEF_EVT(EventSwndAnimationStart, 
EVT_ANIMATION_START, on_animation_start, { IAnimation *pAni; })
 
  410DEF_EVT(EventSwndAnimationStop, 
EVT_ANIMATION_STOP, on_animation_stop, { IAnimation *pAni; })
 
  411DEF_EVT(EventSwndAnimationRepeat, 
EVT_ANIMATION_REPEAT, on_animation_repeat, { IAnimation *pAni; })
 
  419DEF_EVT(EventSwndMouseLeave, 
EVT_MOUSE_LEAVE, on_mouse_leave, { 
int fake; })
 
  421DEF_EVT(EventSwndMouseHover, 
EVT_MOUSE_HOVER, on_mouse_hover, { 
int fake; })
 
  424    IStringT *strToolTip; 
 
  466    MouseClickId clickId; 
 
  470DEF_EVT(EventCmd, 
EVT_CMD, on_command, { 
int fake; })
 
  472DEF_EVT(EventMenuCmd, 
EVT_MENU_CMD, on_menu_command, { 
int menuId; })
 
  474DEF_EVT(EventCtxMenu, 
EVT_CTXMENU, on_conext_menu, {
 
  479DEF_EVT(EventSetFocus, 
EVT_SETFOCUS, on_set_focus, { SWND wndOld; })
 
  481DEF_EVT(EventKillFocus, 
EVT_KILLFOCUS, on_kill_focus, { SWND wndFocus; })
 
  493DEF_EVT(EventOfEvent, 
EVT_OFEVENT, on_event_of_event, { IEvtArgs *pOrgEvt; })
 
  495DEF_EVT(EventOfPanel, 
EVT_OFPANEL, on_event_of_panel, {
 
  526DEF_EVT(EventLBDbClick, 
EVT_LB_DBCLICK, on_listbox_item_dbclick, { 
int nCurSel; })
 
  556DEF_EVT(EventREMenu, 
EVT_RE_MENU, on_richedit_menu, { UINT uCmd; })
 
  558typedef enum _SliderBarAction
 
  567    SliderBarAction action; 
 
  598DEF_EVT(EventCBSelChange, 
EVT_CB_SELCHANGE, on_combobox_sel_change, { 
int nCurSel; })
 
  602    const IStringT *strInput; 
 
  605DEF_EVT(EventCBBeforeCloseUp, 
EVT_CB_BEFORE_CLOSEUP, on_combobox_before_closeup, { BOOL bCloseBlock; })
 
  618DEF_EVT(EventLCDbClick, 
EVT_LC_DBCLICK, on_listctrl_item_dbclick, { 
int nCurSel; })
 
  639DEF_EVT(EventDateTimeChanged, 
EVT_DATETIME_CHANGED, on_datetime_changed, { SYSTEMTIME newTime; })
 
  657DEF_EVT(EventTCExpand, 
EVT_TC_EXPAND, on_treectrl_item_expand, {
 
  663DEF_EVT(EventTCDbClick, 
EVT_TC_DBCLICK, on_treectrl_item_dbclick, {
 
  672DEF_EVT(EventImageAnimateStop, 
EVT_IMAGE_ANI_STOP, on_image_animate_stop, { 
int fake; })
 
  695DEF_EVT(EventRealWndInit, 
EVT_REALWND_INIT, on_real_wnd_init, { BOOL bRet; })
 
_SOUI_EVENTS
定义了SOUI系统中的事件ID
@ EVT_ITEMPANEL_CLICK
面板点击事件
@ EVT_HEADER_ITEMCHANGING
表头项改变中事件
@ EVT_REALWND_DESTROY
真实窗口销毁事件
@ EVT_TC_SELCHANGING
树形控件选择改变中事件
@ EVT_EXTERNAL_BEGIN
外部事件开始ID
@ EVT_CALENDAREX_CHANGED
扩展日历改变事件
@ EVT_LB_SELCHANGED
列表框选择改变事件
@ EVT_CB_BEFORE_CLOSEUP
组合框关闭前事件
@ EVT_LC_SELCHANGED
列表控件选择改变事件
@ EVT_CB_SELCHANGE
组合框选择改变事件
@ EVT_REALWND_CREATE
真实窗口创建事件
@ EVT_RE_NOTIFY
丰富编辑控件通知事件
@ EVT_LC_ITEMDELETED
列表控件项删除事件
@ EVT_TV_SELCHANGED
树控件选择改变事件
@ EVT_HEADER_ITEMCHANGED
表头项改变事件
@ EVT_SPIN_VALUE2STRING
旋转框值转字符串事件
@ EVT_TV_SELCHANGING
树控件选择改变中事件
@ EVT_IMAGE_ANI_START
图片动画开始事件
@ EVT_HEADER_ITEMSWAP
表头项交换事件
@ EVT_ANIMATION_REPEAT
动画重复事件
@ EVT_ITEMPANEL_RCLICK
面板右键点击事件
@ EVT_ITEMPANEL_DBCLICK
面板双击事件
@ EVT_ANIMATION_STOP
动画停止事件
@ EVT_TC_CHECKSTATE
树形控件检查状态改变事件
@ EVT_ITEMPANEL_RCLICK_UP
面板右键点击释放事件
@ EVT_LC_SELCHANGING
列表控件选择改变中事件
@ EVT_CAPTURECHANGED
捕获改变事件
@ EVT_REALWND_POSITION
真实窗口位置改变事件
@ EVT_IMAGE_ANI_REPEAT
图片动画重复事件
@ EVT_SCROLLVIEW_ORIGINCHANGED
滚动视图原点改变事件
@ EVT_SPLIT_PANE_MOVED
分割窗格移动事件
@ EVT_TAB_SELCHANGED
选项卡选择改变事件
@ EVT_LV_SELCHANGED
列表视图选择改变事件
@ EVT_ITEMPANEL_HOVER
面板悬停事件
@ EVT_OFPANEL
面板中的消息二次包装事件
@ EVT_TC_SELCHANGED
树形控件选择改变事件
@ EVT_IMAGE_ANI_STOP
图片动画停止事件
@ EVT_REALWND_INIT
真实窗口初始化事件
@ EVT_LV_ITEMCLICK
列表视图项点击事件
@ EVT_SLIDER_VALUETIP
滑块值提示事件
@ EVT_CALENDAR_SETDATE
日历设置日期事件
@ EVT_TAB_ITEMLEAVE
选项卡项离开事件
@ EVT_RADIOGROUP_CHECK_CHANGED
单选按钮组选中状态改变事件
@ EVT_ITEMPANEL_CLICK_UP
面板点击释放事件
@ EVT_ANIMATION_START
动画开始事件
@ EVT_TAB_SELCHANGING
选项卡选择改变中事件
@ EVT_TAB_ITEMHOVER
选项卡项悬停事件
@ EVT_SCROLLVIEW_SIZECHANGED
滚动视图大小改变事件
@ EVT_HEADER_RELAYOUT
表头重新布局事件
@ EVT_UPDATE_TOOLTIP
更新工具提示事件
@ EVT_DATETIME_CHANGED
日期时间改变事件
@ EVT_ITEMPANEL_LEAVE
面板离开事件
@ EVT_VISIBLECHANGED
可见性改变事件
@ EVT_LB_SELCHANGING
列表框选择改变中事件
@ EVT_LV_SELCHANGING
列表视图选择改变中事件
@ EVT_CALENDAR_SELDAY
日历选择日期事件
Template class implementing the IObjRef interface.