这是下面的整体代码:
LRESULT WmPointerAPI::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HRESULT hr;
POINTER_INFO pointerInfo = {};
UNREFERENCED_PARAMETER(hr);
switch (message)
{
case WM_POINTERDOWN:
// Get frame id from current message
if (GetPointerInfo(GET_POINTERID_WPARAM(wParam), &pointerInfo))
{
我专注于:
if (GetPointerInfo(GET_POINTERID_WPARAM(wParam), &pointerInfo))
我目前正在使用Leap Motion技术,这是一种将坐标插入我的应用程序的3D传感器。 问题是,我不知道如何插入我自己的"坐标"进入wParam,以便它接收我的坐标,而不是光标/触摸屏。
我如何通过wParam注入或模拟触摸,使用我自己的屏幕坐标?
答案 0 :(得分:2)
坐标位于lParam
,请参阅here:
Use the following macros to retrieve the physical screen coordinates of the point:
* GET_X_LPARAM(lParam): the x (horizontal point) coordinate.
* GET_Y_LPARAM(lParam): the y (vertical point) coordinate.
您可以使用MAKELPARAM
宏创建新的lParam
值。例如:
WORD screenX = 345;
WORD screenY = 234;
LPARAM testLParam = MAKELPARAM(screenX, screenY);
如果您还想创建wParam
,那么您应该对in its description列出的宏读取wParam
的哪些位进行反向工程,并创建自己的wParam
使用位操作的值。例如,GET_POINTERID_WPARAM读取WORD
的低位wParam
。宏MAKEWPARAM也可以派上用场。