win32强化练习4.3_粗糙的SPY获取别人的窗口

之前我们获取别人的窗口的菜单时,使用的是SPY++,其问题在于每次打开的窗口分配的句柄编号都是不一定的,我们的程序总不能老是去改啊!

那么这个练习,我们就做一个粗糙的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);
		}

这一节即练习了图标的加载和绘制,又练习了光标的加载和应用,还练习了鼠标的系列消息处理。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值