win32开发(鼠标)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    自从上一期说了键盘消息之后,我就在想怎么写好鼠标这一章。其实和键盘消息相比较,鼠标消息也不难。几乎不需要在ResourceView做什么操作,直接在WndProc添加case响应就可以了,比如说像这样,

			case WM_LBUTTONDOWN:
				break;

			case WM_LBUTTONUP:
				break;

    当然,上面的只是一份说明,我们总要写一点有意思的东西,比如说划线。这就是一个经常用来说明鼠标应用的例子。当让鼠标按下去的时候,记录一下鼠标的x、y坐标。等到鼠标返回的时候,再记录一下鼠标的坐标,利用这两个坐标画一条直线就可以了。为此,我们做了如下修改,

			case WM_LBUTTONDOWN:
				x = GET_X_LPARAM(lParam);
				y = GET_Y_LPARAM(lParam);
				break;

			case WM_LBUTTONUP:
				hdc = GetDC(hWnd);
				MoveToEx(hdc, x, y, NULL);
				LineTo(hdc, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
				ReleaseDC(hWnd, hdc);
				break;
    看上去也不是什么太复杂,为此,我们还需要定义一下x、y变量,且引用一下定义GET_X_LPARAM和GET_Y_LPARAM的头文件,

#include 
int x = 0;
int y = 0;
    经过这两个步骤,基本上鼠标画线的流程就算完成了。但是美中不足的是,我们没有保存每次直线的位置,等到app最小化后恢复的时候,app上面所有的直线就消失了,这个时候app又会是白茫茫一片。所以,如果要想体验好的话,一定要记录直线坐标的位置,且在WM_PAINT的时候,重新将这些直线画出来。


你可能感兴趣的:(mfc和win32开发)