Мне нужно знать координаты x и y нажатия кнопки при активации WM_COMMAND - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть кнопка, созданная с помощью

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

Нужно ли искать в сообщении информацию?

1 Ответ

1 голос
/ 30 сентября 2010

Чтобы получить координаты 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);
  }
}
...