2010-04-07 3 views
0

J'ai un bouton créé avecJ'ai besoin de connaître les coordonnées x et y du bouton clic lorsqu'un WM_COMMAND est activé

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

je vais ajouter l'image à l'avenir mais je dois savoir où le bouton qu'ils ont cliqué pour que je puisse déterminer s'ils ont cliqué sur N, S, E, W ou un autre point de la boussole.

Mon appel est:

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

Ai-je besoin de regarder dans le message pour que infomration?

Répondre

1

Afin de récupérer les coordonnées X et Y d'un clic de souris sur le bouton, vous devez:

  • Dans la fonction WndProc(), attraper l'événement WM_MOUSEMOVE
  • Une fois que l'événement est déclenché, wParam vous donnera le type d'événement (quel bouton a été pressé)
  • Sur l'événement désiré, vous êtes en mesure de récupérer les coordonnées par lParam

Quelque chose comme ça:

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); 
    } 
} 
Questions connexes