我如何使用自己的坐标而不是wParam? (使用winapi)

时间:2013-08-27 20:02:39

标签: c++ winapi msdn

这是下面的整体代码:

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注入或模拟触摸,使用我自己的屏幕坐标?

1 个答案:

答案 0 :(得分:2)

lParam的

坐标位于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

如果您还想创建wParam,那么您应该对in its description列出的宏读取wParam的哪些位进行反向工程,并创建自己的wParam使用位操作的值。例如,GET_POINTERID_WPARAM读取WORD的低位wParam。宏MAKEWPARAM也可以派上用场。