【问题标题】:I need to know the x and y coordinates of the button click when a WM_COMMAND is activated我需要知道激活 WM_COMMAND 时按钮单击的 x 和 y 坐标
【发布时间】:2011-02-05 07:23:15
【问题描述】:

我有一个用

创建的按钮
//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)

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

【问题讨论】:

    标签: winapi buttonclick mouse-coordinates


    【解决方案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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多