ok je sais comment faire le bouton gauche de la souris sur evet (WM_LBUTTONDOWN). mais j'ai quelques problèmes avec ça. quand on l'utilise avec des vecteurs, il semble ajouter 101 elemnts chaque fois que le bouton gauche de la souris est enfoncé. Je pense que chaque fois que le bouton de la souris est enfoncé, il envoie 101 messages à WM_LBUTTONDOWN qui entraîne l'ajout de 101 éléments. voici le code pour l'événementC++ bouton gauche de la souris vers le bas aide
case WM_LBUTTONDOWN:
iRegularShots=0;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
pRegularShots.push_back(pt);
InvalidateRect(hWnd, rect, false);
break;
des idées?
je ne manque pas de pause;
J'ai utilisé la fonction size() pour me dire combien d'élus ont été attribués.
J'ai mis deux points de rupture un un pRegularShots.push_back (pt); et l'autre sur une fonction différente qui utilisera ce qui est à l'intérieur du vecteur pour afficher l'image. et j'ai reçu 101 appels là-bas, mais un seul appel sur le pRegularShots.push_back (pt) ;.
c'est le code de fonction
VOID fRegularShot(HDC hdc, HWND hWnd)
{
Graphics graphics(hdc);
Image shot(L"RegularShots.png");
long index=0;
long s=pRegularShots.size();
while(index < (long)pRegularShots.size())
{
graphics.DrawImage(&shot, pRegularShots[index].x, pRegularShots[index].y);
++index;
}
}
fenêtres
prudocer
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
OnPaint(hdc, hWnd, 1);
if(iRegularShots==0)
{
fRegularShot(hdc, hWnd);
}
EndPaint(hWnd, &ps);
break;
case WM_LBUTTONDOWN:
iRegularShots=0;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
pRegularShots.push_back(pt);
InvalidateRect(hWnd, rect, false);
return 0;
break;
case WM_LBUTTONUP:
iRegularShots=1;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Voyez-vous vraiment 101 appels à WM_LBUTTONDOWN, ou seulement 101 éléments dans le vecteur? –
juste 101 elemnts – Ramilol
Avez-vous une boucle for (int i; i <100; ++ i) {} quelque part qui fait quelque chose d'involontaire au vecteur? –