好的,所以今天我正在使用矢量yaya!
我也正在与getcursorpos()
合作,我得到了奇怪的结果
这是代码:
VOID fRegularShot(HDC hdc, HWND hWnd)
{
Graphics graphics(hdc);
Image shot(L"RegularShots.png");
long index=0;
while(index<=(long)pRegularShots.size())
{
index+=2;
int x=pRegularShots.at(index);
int y1=index+1;
int y=pRegularShots.at(y1);
graphics.DrawImage(&shot, x, y);
}
}
///////////////////////////////////////////////////
event
case WM_LBUTTONDOWN:
iRegularShots=0;
POINT pt;
GetCursorPos(&pt);
pRegularShots.insert(pRegularShots.begin()+1, pt.y);
pRegularShots.insert(pRegularShots.begin()+1, pt.x);
InvalidateRect(hWnd, rect, false);
break;
基本上调用函数fregularshots()
并使用包含光标位置的向量元素,而不是在光标位置上绘制图像。
但它似乎没有在光标位置上绘制它
任何想法?
答案 0 :(得分:0)
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;