我想通过点击并从点移动光标以,我刚才复制下面的代码我的任何WindowProcedure看起来像画一条线:图Line WINAPI
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//PAINTSTRUCT ps;
HDC hdc;
bool draw = false;
int x = 0, y=0;
//InvalidateRect(hwnd, NULL, true);
switch (uMsg)
{
case WM_LBUTTONDOWN:
draw = true;
x = LOWORD(lParam);
y = HIWORD(lParam);
return 0;
case WM_LBUTTONUP:
if (draw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, x, y, NULL);
LineTo(hdc, LOWORD(lParam), HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
draw = FALSE;
return 0;
case WM_MOUSEMOVE:
if (draw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, x, y, NULL);
LineTo(hdc, x = LOWORD(lParam), y = HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
但是当我点击没有任何反应,它就像只有一个案件可以处理,是正确的吗?当我评论前两种情况时,它会画出线条,所以它进入切换状态,但它不是我想要做的。任何建议?
这不是绘画的工作原理。根据WM_PAINT做绘画。 –
好,我不喜欢的东西: 情况WM_PAINT: \t \t如果(绘制) \t \t { \t \t \t HDC =的GetDC(HWND);设置像素(hdc,x,y,RGB(50,50,50));以及其中, \t \t \t ReleaseDC(hwnd,hdc); \t \t \t \t } \t \t 返回\t 0; 并且它仍然不起作用。 @编辑,我想我不能添加代码来评论... – Ravo
不,那不是如何做到这一点。不要猜测。不要这样做。研究这个话题。没有人学会通过猜测来编程Win32。 –