|
|
@@ -1020,12 +1020,14 @@ namespace DuiLib
|
|
|
// 触摸手势的实际处理(滚动 / 轻触判定 / 惯性)由 CTouchWindowBase 通过 WM_TOUCH 完成,
|
|
|
// 轻触时它会以“纯净鼠标消息”(ExtraInfo=0) 重新发一次 down+up 给真正需要点击的控件。
|
|
|
//
|
|
|
- // 作用范围用 IsTouchWindow 精确限定:只有调用过 RegisterTouchWindow 的窗口(主窗口及所有模态框,
|
|
|
- // 均继承自 CTouchWindowBase)才过滤。DuiLib 的下拉框/菜单等弹出窗口并未注册触摸,
|
|
|
- // IsTouchWindow 返回 FALSE —— 它们的 FROMTOUCH 鼠标照常进入 DuiLib,触摸点选不受影响。
|
|
|
+ // 作用范围用窗口属性“TouchMouseFilter”精确限定(CTouchWindowBase 在 WM_CREATE 里 SetProp 打标记):
|
|
|
+ // 只有调用过 RegisterTouchWindow 的窗口(主窗口及所有模态框,均继承自 CTouchWindowBase)才过滤。
|
|
|
+ // DuiLib 的下拉框/菜单等弹出窗口并未注册触摸、也没有此标记,GetProp 返回 NULL —— 它们的 FROMTOUCH
|
|
|
+ // 鼠标照常进入 DuiLib,触摸点选不受影响。
|
|
|
+ // 注:未用 IsTouchWindow,因其声明要求 _WIN32_WINNT>=0x0601,本项目部分目标 SDK 没有该符号。
|
|
|
if ((uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONUP || uMsg == WM_LBUTTONDBLCLK
|
|
|
|| uMsg == WM_MOUSEMOVE)
|
|
|
- && ::IsTouchWindow(m_hWndPaint, NULL)
|
|
|
+ && ::GetProp(m_hWndPaint, L"TouchMouseFilter") != NULL
|
|
|
&& (::GetMessageExtraInfo() & 0xFF515700) == 0xFF515700)
|
|
|
{
|
|
|
lRes = 0;
|