GetCursorPos возвращает позицию курсора в экранных координатах.Используйте ScreenToClient (hWnd, ...) для преобразования его в клиентские координаты окна.
GetCursorPos(&pt);
ScreenToClient(hWnd, &pt);
Вы также можете работать без функции GetCursorPos.Когда уведомление WM_LBUTTONDOWN получено, lParam содержит координаты мыши окна клиента: x в младшем слове, y в старшем слове:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Редактировать: Давайте сделаем этот код более простым.
vector<POINT> pRegularShots;
VOID fRegularShot(HDC hdc, HWND hWnd)
{
Graphics graphics(hdc);
Image shot(L"RegularShots.png");
long index=0;
while(index < (long)pRegularShots.size())
{
graphics.DrawImage(&shot, pRegularShots[index].x, pRegularShots[index].y);
++index;
}
}
case WM_LBUTTONDOWN:
POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
pRegularShots.push_back(pt);
InvalidateRect(hWnd, rect, false);
break;