хорошо, я знаю, как сделать левую кнопку мыши внизу (WM_LBUTTONDOWN).но у меня есть некоторые проблемы с этим.при использовании его с векторами кажется, что каждый раз при нажатии левой кнопки мыши добавляется 101 элемент.Я думаю, что каждый раз, когда кнопка мыши нажата, она отправляет 101 сообщение на WM_LBUTTONDOWN, что приводит к добавлению 101 элемента.вот код для мероприятия
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;
есть идеи?я не пропускаю перерыв;я использовал функцию size (), чтобы сказать мне, сколько элементов было назначено.я установил две точки останова одну одну pRegularShots.push_back (pt);и другой на другой функции, которая будет использовать то, что находится внутри вектора, чтобы отобразить изображение.и я получил 101 вызов там, но только один вызов на pRegularShots.push_back (pt) ;.это код функции
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;
}
}
windows 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;
}