我想学习一些Win API知识,试图制作一个基本的绘画应用程序,类似于MS Paint。
目前我正在尝试让一个功能起作用,即当你左键单击并拖动鼠标时,在鼠标后面画出一条直线。这是我目前的进展,但出现了以下问题:
1)直线立即开始绘制而不是等待左键单击 2)线条不连续,非常稀疏。
case WM_MOUSEMOVE:
{
if(MK_LBUTTON){
hdc = GetDC(hwnd);
hPen = CreatePen(PS_SOLID,5,RGB(0, 0, 255));
SelectObject(hdc, hPen);
int x = LOWORD(lParam);
int y = HIWORD(lParam);
MoveToEx(hdc,x,y,NULL);
LineTo(hdc, LOWORD(lParam), HIWORD(lParam));
ReleaseDC(hwnd,hdc);
}
else
break;
}
感谢您的帮助!
非常感谢您的任何帮助!
WM_MOUSEMOVE
会触发,而不仅仅是在移动并按下按钮时才触发。因此,要仅在按下按钮时绘制,您首先必须让程序“记住”它是否已按下。 - Bernd Elkemannbool isDown
。然后使用:case WM_LBUTTONDOWN: isDown=true; break; case WM_LBUTTONUP: isDown=false; break; case WM_MOUSEMOVE: if(isDown) draw(); break;
- Bernd Elkemann