Winapi 我需要知道WM_命令激活时按钮点击的x和y坐标

Winapi 我需要知道WM_命令激活时按钮点击的x和y坐标,winapi,buttonclick,mouse-coordinates,Winapi,Buttonclick,Mouse Coordinates,我有一个按钮是用 //Create Compass HWND hWndCompass = CreateWindowEx(NULL, "BUTTON", "Compass", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON, 600, 10, 50, 24, hWnd, (HMENU)IDC_COMPASS, GetModuleHandle(NULL), NULL); 我将在将来添加图片,但我需要知道他们单击按钮的位置,以便

我有一个按钮是用

//Create Compass
    HWND hWndCompass = CreateWindowEx(NULL, "BUTTON", "Compass", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,
        600, 10, 50, 24, hWnd, (HMENU)IDC_COMPASS, GetModuleHandle(NULL), NULL);
我将在将来添加图片,但我需要知道他们单击按钮的位置,以便我可以确定他们是否单击了指南针的N、S、E、W或其他点

我的电话是:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

我需要在消息中查找该信息吗?

要检索鼠标单击按钮的X和Y坐标,您应该:

  • 在WndProc()函数中,捕获
    WM\u MOUSEMOVE
    事件
  • 一旦引发事件,
    wParam
    将为您提供事件类型(已按下哪个按钮)
  • 在所需事件中,您可以通过
    lParam
诸如此类:

RESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
    case WM_MOUSEMOVE:
    {
      if (lParam == MK_LBUTTON)
      {
        myXCoord = GET_X_LPARAM(lParam); 
        myYCoord = GET_Y_LPARAM(lParam); 
      }
    }
    break;
    default:
      DefWindowProc(hWnd, message, wParam, lParam);
  }
}
  • 有关WM_MOUSEMOVE消息的更多信息,请转到: