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);
  }
}
  • WM_MOUSEMOVE メッセージの詳細については、http://msdn.microsoft.com/en-us/library/ms645616%28v=vs.85%29.aspx にアクセスしてください。
于 2010-09-29T21:09:21.440 に答える