0

我有一个创建的按钮

//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)

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

4

1 回答 1

1

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

  • 在 WndProc() 函数中,捕获WM_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);
  }
}
于 2010-09-29T21:09:21.440 回答