win32强化练习4.3_粗糙的SPY获取别人的窗口
2016-11-26 02:29
211 查看
之前我们获取别人的窗口的菜单时,使用的是SPY++,其问题在于每次打开的窗口分配的句柄编号都是不一定的,我们的程序总不能老是去改啊!
那么这个练习,我们就做一个粗糙的SPY,用鼠标去获取窗口,而不用再改程序了。
这个练习主要功能: 1. 在窗口上绘制一个图标,2. 点击图标(其他区域不起作用)后会改变光标提示,3. 移动到其他窗口上,得到其窗口句柄编号,4. 操作这个窗口
步骤如下:
1. 在WM_PAINT中绘制一个图标
2. 处理左键或右键按下消息,判断点击坐标是否在上一步绘制的图标范围内
3. 如果点在图标范围内,则改变光标
这一节即练习了图标的加载和绘制,又练习了光标的加载和应用,还练习了鼠标的系列消息处理。
那么这个练习,我们就做一个粗糙的SPY,用鼠标去获取窗口,而不用再改程序了。
这个练习主要功能: 1. 在窗口上绘制一个图标,2. 点击图标(其他区域不起作用)后会改变光标提示,3. 移动到其他窗口上,得到其窗口句柄编号,4. 操作这个窗口
步骤如下:
1. 在WM_PAINT中绘制一个图标
case WM_PAINT: { HICON hIcon1 = LoadIconA(g_hInst, MAKEINTRESOURCEA(IDI_ICON1)); PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); DrawIcon(hdc, 100,100, hIcon1); EndPaint(hwnd, &ps); }
2. 处理左键或右键按下消息,判断点击坐标是否在上一步绘制的图标范围内
case WM_RBUTTONDOWN: { POINT pt; RECT rt; rt.left = 100; rt.right = 150; rt.top = 100; rt.bottom = 150; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); if (PtInRect(&rt, pt))//判断鼠标是否在图标范围内 { MessageBox(0,"GET",0,0);
3. 如果点在图标范围内,则改变光标
SetCapture(hwnd); bDraw = true;
case WM_SETCURSOR: { if (bDraw) { SetCursor(hCur); return 0; //不让DefWindowProc将光标改回 } }4. 设置捕捉后,就可以移到其他窗口上,处理松开按键消息
case WM_RBUTTONUP: { ReleaseCapture(); bDraw = 0; hDes = WindowFromPoint(pt); CreateWindow("BUTTON","ADD",WS_CHILD|WS_VISIBLE, 100,100,100,20,hDes,(HMENU)101010,g_hInst, NULL); }
这一节即练习了图标的加载和绘制,又练习了光标的加载和应用,还练习了鼠标的系列消息处理。
相关文章推荐
- win32强化练习4.1_更改别人的菜单
- win32强化练习3.7_拖动窗口
- win32 获取窗口句柄的方法
- Win32窗口、消息练习
- win32强化练习3.2_鼠标消息
- win32强化练习4.4_状态栏、坐标与时钟
- win32强化练习4.0_资源相关练习简介
- win32强化练习3.6_贪吃蛇半部
- WIN32 API获取窗口句柄
- win32强化练习2.5_滚动条初步
- win32强化练习2.4_双击播放MP3(列表框与通知码)
- [Win32]获取当前输入焦点窗口所属进程的进程ID
- Java基础知识强化之IO流笔记55:IO流练习之 自定义类模拟LineNumberReader的获取行号功能案例
- Java基础知识强化之IO流笔记47:IO流练习之 随机获取文本文件中的姓名案例
- win32强化练习3.1_键盘控制小球移动
- win32强化练习2.1_简单加法计算器(界面文本与数据的读取和显示)
- 关于WIN32 窗口信息的各种获取
- Picture Control添加类似SPY++拖拽功能获取窗口句柄和标题(VS2010)
- win32强化练习1.1_MessageBox简单应用及手动编译
- win32强化练习3.4_绘制坦克及四向移动(键盘进阶)