|
|
@@ -22,6 +22,15 @@ namespace DuiLib
|
|
|
// 是因为 POS 收银场景下手指微颤/小幅拖动极易被判成点击,从而误把商品加进购物车。
|
|
|
static constexpr LONG TOUCH_TAP_SLOP = 10;
|
|
|
|
|
|
+ // WM_TOUCH 消息 ID 同样受 `#if _WIN32_WINNT >= 0x0601` 保护,DuiLib 工程未定义
|
|
|
+ // _WIN32_WINNT(StdAfx.h 兜底为 XP)→ 必须自行声明,否则 switch 里引用该消息 ID
|
|
|
+ // 会报 C2065(未声明的标识符)与 C2051(case 表达式不是常量)。实测固定值 0x0240。
|
|
|
+ // 注:Win7+ 段受保护的不仅有结构体与函数,**消息 ID 与辅助宏同样在内**,
|
|
|
+ // TOUCH_COORD_TO_PIXEL 也在上面用 #ifndef 兜底,原因相同。
|
|
|
+#ifndef WM_TOUCH
|
|
|
+#define WM_TOUCH 0x0240
|
|
|
+#endif
|
|
|
+
|
|
|
static void GetChildWndRect(HWND hWnd, HWND hChildWnd, RECT& rcChildWnd)
|
|
|
{
|
|
|
::GetWindowRect(hChildWnd, &rcChildWnd);
|
|
|
@@ -496,10 +505,13 @@ namespace DuiLib
|
|
|
DWORD cyContact;
|
|
|
} TOUCHINPUT, *PTOUCHINPUT;
|
|
|
|
|
|
- // 与 winuser.h 完全一致的事件标志
|
|
|
- const DWORD TOUCHEVENTF_MOVE = 0x0002;
|
|
|
- const DWORD TOUCHEVENTF_DOWN = 0x0004;
|
|
|
- const DWORD TOUCHEVENTF_UP = 0x0008;
|
|
|
+ // 事件标志,数值与 winuser.h 的触摸事件标志一致。
|
|
|
+ // 名字必须避开 SDK 的同名宏:部分 SDK 把它们定义成【宏】,且不受 _WIN32_WINNT 版本段保护,
|
|
|
+ // 同名会被预处理器展开——声明变成 `const DWORD 0x0002 = 0x0002;`(C2059),
|
|
|
+ // 限定使用变成 `TouchApi::0x0004`(C2589)。故改用 TOUCHEVTFLAG 前缀。
|
|
|
+ const DWORD TOUCHEVTFLAG_MOVE = 0x0002;
|
|
|
+ const DWORD TOUCHEVTFLAG_DOWN = 0x0004;
|
|
|
+ const DWORD TOUCHEVTFLAG_UP = 0x0008;
|
|
|
|
|
|
typedef BOOL (WINAPI *PFN_RegisterTouchWindow)(HWND, ULONG);
|
|
|
typedef BOOL (WINAPI *PFN_GetTouchInputInfo)(HANDLE, UINT, PTOUCHINPUT, int);
|
|
|
@@ -590,7 +602,7 @@ namespace DuiLib
|
|
|
pt.y = TOUCH_COORD_TO_PIXEL(ti.y);
|
|
|
::ScreenToClient(m_hWndPaint, &pt);
|
|
|
|
|
|
- if (ti.dwFlags & TouchApi::TOUCHEVENTF_DOWN)
|
|
|
+ if (ti.dwFlags & TouchApi::TOUCHEVTFLAG_DOWN)
|
|
|
{
|
|
|
m_bTouchDown = true;
|
|
|
m_ptLastTouchPos = pt;
|
|
|
@@ -615,7 +627,7 @@ namespace DuiLib
|
|
|
m_pTouchTarget->Event(event);
|
|
|
}
|
|
|
}
|
|
|
- else if (ti.dwFlags & TouchApi::TOUCHEVENTF_MOVE)
|
|
|
+ else if (ti.dwFlags & TouchApi::TOUCHEVTFLAG_MOVE)
|
|
|
{
|
|
|
if (!m_bTouchDown) continue;
|
|
|
|
|
|
@@ -650,7 +662,7 @@ namespace DuiLib
|
|
|
pTarget->Event(event);
|
|
|
}
|
|
|
}
|
|
|
- else if (ti.dwFlags & TouchApi::TOUCHEVENTF_UP)
|
|
|
+ else if (ti.dwFlags & TouchApi::TOUCHEVTFLAG_UP)
|
|
|
{
|
|
|
if (!m_bTouchDown) continue;
|
|
|
|