win32强化练习3.2_鼠标消息
2016-11-20 21:33
288 查看
键盘消息在对话框程序中是不能直接用的,但是鼠标消息是可以的。
鼠标消息需要多做练习~
鼠标消息的wParam仍然是键盘的信息,而坐标放在了lParam中,其中x坐标是低字(LOWORD)而y坐标是高字(HIWORD)。
先进行一个与键盘差不多的练习,即小球跟着鼠标移动:
1. 先用HDC画个圆(坐标使用全局变量);
2. 处理WM_MOUSEMOVE消息,获取X,Y坐标
3. 刷新绘图
int gx = 10, gy = 10;
接着,进行一个用鼠标左键按下是画圆,拖动变形,放开左键完成的练习:
1. 在之前程序基础上,加上全局变量起点的x,y坐标
2. 增加一个标志位,标志当前是否在绘制状态
3. 处理WM_LBUTTONDOWN消息,
4. 处理WM_MOUSEMOVE消息,
5. 处理WM_LBUTTONUP消息。
BOOL bDraw = FALSE;
int gStartx, gStarty;
接着,我们试图进一步,在图上能画出多个圈,那么就需要刷新时对所需要的区域进行刷新,把这个区域用RECT定义出来即可:
case WM_MOUSEMOVE:
{
if (!bDraw) break;
gx = short(LOWORD(lParam));
gy = short(HIWORD(lParam));
RECT rt;
rt.left = gStartx;
rt.top = gStarty;
rt.right = gx;
rt.bottom = gy;
InvalidateRect(hwnd, &rt, TRUE);
}
鼠标消息需要多做练习~
鼠标消息的wParam仍然是键盘的信息,而坐标放在了lParam中,其中x坐标是低字(LOWORD)而y坐标是高字(HIWORD)。
先进行一个与键盘差不多的练习,即小球跟着鼠标移动:
1. 先用HDC画个圆(坐标使用全局变量);
2. 处理WM_MOUSEMOVE消息,获取X,Y坐标
3. 刷新绘图
int gx = 10, gy = 10;
case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); Ellipse(hdc, gx, gy, gx+50,gy+50); EndPaint(hwnd, &ps); } break;
case WM_MOUSEMOVE: { gx = short(LOWORD(lParam)) - 25; gy = short(HIWORD(lParam)) - 25; InvalidateRect(hwnd, NULL, TRUE); } break;
接着,进行一个用鼠标左键按下是画圆,拖动变形,放开左键完成的练习:
1. 在之前程序基础上,加上全局变量起点的x,y坐标
2. 增加一个标志位,标志当前是否在绘制状态
3. 处理WM_LBUTTONDOWN消息,
4. 处理WM_MOUSEMOVE消息,
5. 处理WM_LBUTTONUP消息。
BOOL bDraw = FALSE;
int gStartx, gStarty;
case WM_LBUTTONDOWN: { bDraw = TRUE; gStartx = short(LOWORD(lParam)); gStarty = short(HIWORD(lParam)); } break;
case WM_MOUSEMOVE: { if (!bDraw) break; gx = short(LOWORD(lParam)); gy = short(HIWORD(lParam)); InvalidateRect(hwnd, NULL, TRUE); } break;
case WM_LBUTTONUP: { bDraw = FALSE; } break;
接着,我们试图进一步,在图上能画出多个圈,那么就需要刷新时对所需要的区域进行刷新,把这个区域用RECT定义出来即可:
case WM_MOUSEMOVE:
{
if (!bDraw) break;
gx = short(LOWORD(lParam));
gy = short(HIWORD(lParam));
RECT rt;
rt.left = gStartx;
rt.top = gStarty;
rt.right = gx;
rt.bottom = gy;
InvalidateRect(hwnd, &rt, TRUE);
}
相关文章推荐
- win32强化练习4.8_TreeView快速应用(处理消息)
- Win32窗口鼠标消息
- win32强化练习2.3_四则计算器(组合框控件)
- win32强化练习4.3_粗糙的SPY获取别人的窗口
- WIN32学习——鼠标消息
- Win32控制台程序,ListBox控件响应鼠标单击及双击消息
- 【win32】day05-鼠标消息/定时器消息/菜单
- Win32 鼠标消息 - 客户区鼠标消息、非客户区鼠标消息、击中测试、鼠标滚轮
- [Win32]Win32 SDK编程系列文章——鼠标输入消息
- Win32 SDK基础(13)—— 键盘和鼠标消息
- win32强化练习2.4_双击播放MP3(列表框与通知码)
- win32强化练习3.1_键盘控制小球移动
- win32强化练习4.5_标准工具栏的使用
- win32,按钮处理鼠标滑过消息
- win32强化练习4.7_快速建立TreeView
- win32强化练习2.0_手工打造自己的对话框程序模板
- win32强化练习2.5_滚动条初步
- win32强化练习4.1_更改别人的菜单
- WIN32汇编: 7.处理鼠标输入消息
- win32强化练习4.6_自定义图标或图像的工具栏