界面消息传递机制, 通过宏定义点击事件处理方法。
来看一下 主要消息的处理宏展开是什么情况 wndProc-----> HandleMessage--->func1....funcn
----->CpaintManagerUI:MessageHandleer
----->CwindowWnd::HandleMessage:
(1)声明了几个函数参数
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) \
{ \
LRESULT lResult = 0; \
BOOL bHandled = FALSE; \
(uMsg); \
(wParam); \
(lParam);
(2)是自己感兴趣的消息的时候就使用 func执行处理并返回
#define UILIB_MESSAGE_HANDLER(msg, func) \
if(uMsg == msg) \
{ \
bHandled = TRUE; \
lResult = func(uMsg, wParam, lParam, bHandled); \
if(bHandled) \
return lResult; \
}
(3)使用两级处理 painterManager处理 , 最后执行 CWindWnd默认处理
#define UILIB_END_MSG_MAP() \
if( bHandled ) \
return lResult; \
if( m_pm.MessageHandler(uMsg, wParam, lParam, lResult) ) \
return lResult;\
return DuiLib::CWindowWnd::HandleMessage(uMsg, wParam, lParam);\
}
再来看一下对 CPaintManagerUI::MessageHandler的处理。主要是定义 消息名字对应的消息处理函数。
typedef struct tagTNotifyUI
{
CDuiString sType;
CDuiString sVirtualWnd;
CControlUI* pSender; // 发送者 的消息名字
DWORD dwTimestamp;
POINT ptMouse;
WPARAM wParam;
LPARAM lParam;
} TNotifyUI;
(1)控件的Notify
#define UILIB
来看一下 主要消息的处理宏展开是什么情况 wndProc-----> HandleMessage--->func1....funcn
----->CpaintManagerUI:MessageHandleer
----->CwindowWnd::HandleMessage:
(1)声明了几个函数参数
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) \
{ \
LRESULT lResult = 0; \
BOOL bHandled = FALSE; \
(uMsg); \
(wParam); \
(lParam);
(2)是自己感兴趣的消息的时候就使用 func执行处理并返回
#define UILIB_MESSAGE_HANDLER(msg, func) \
if(uMsg == msg) \
{ \
bHandled = TRUE; \
lResult = func(uMsg, wParam, lParam, bHandled); \
if(bHandled) \
return lResult; \
}
(3)使用两级处理 painterManager处理 , 最后执行 CWindWnd默认处理
#define UILIB_END_MSG_MAP() \
if( bHandled ) \
return lResult; \
if( m_pm.MessageHandler(uMsg, wParam, lParam, lResult) ) \
return lResult;\
return DuiLib::CWindowWnd::HandleMessage(uMsg, wParam, lParam);\
}
再来看一下对 CPaintManagerUI::MessageHandler的处理。主要是定义 消息名字对应的消息处理函数。
typedef struct tagTNotifyUI
{
CDuiString sType;
CDuiString sVirtualWnd;
CControlUI* pSender; // 发送者 的消息名字
DWORD dwTimestamp;
POINT ptMouse;
WPARAM wParam;
LPARAM lParam;
} TNotifyUI;
(1)控件的Notify
#define UILIB