MFC版美女找茬
今天心情:捡了个闲暇。
前几天工作出了个漏洞,电话会议时候怎么都是忽大忽小的声音,实在没听清电话会议的内容,完了依据想象交了一个设计方案,之后便是赋闲。
进入正题,美女找茬实现不难,没有设计上的难度,找到API即可,API的顺序如下:
1.对话框的透明、置顶、穿透属性实现。
-----自然得洋气一点,那种半透明的、不小心点了鼠标就把游戏窗口的焦点整没的一定不能要。
2.查找QQ游戏窗口的名称以及获得句柄。
-----SPY++获得窗口名称,FindWindow获得指定名称窗口的句柄。
3.移动对话框将之覆盖到美女找茬左侧或者右侧的图片上
-----MoveWindow,移动窗口并改变大小,最后一个参数指定是否重绘窗口
4.依据QQ游戏窗口句柄获得指定位置的像素
-----Handle初始化DC,依据DC的GetPixel方法获得指定像素点的颜色。
5.透明对话框上绘制不透明的像素点
-----犯难很久才搞定,窗口属性指定透明颜色、设置窗口背景为透明色、绘制时采用不透明色进行绘制。
6.定义全局快捷键
-----对话框又透明又穿透的,鼠标已经奈何不了它了,来全局快捷键吧
以下仅给出相应的API调用样例,有兴趣的朋友自行组装,不想动手做只想哄女朋友的同学抱歉啦。
窗口透明以及鼠标穿透的API: SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE,
指定RGB(255,255,255)色为透明色的API:SetLayeredWindowAttributes(#ffffff,100, LWA_COLORKEY);
----此API搭配背景色填充可实现对话框透明:dc->FillSolidRect(currect, #ffffff);
对话框个性化的API:ModifyStyle( WS_CAPTION, WS_MINIMIZEBOX, SWP_DRAWFRAME );
----可以去掉标题、边框、最大最小按钮。
移动并改变窗口大小的API:MoveWindow(100, 300, 500, 500, TRUE);
-----前四个参数分别对应x、y、width、height
窗口名称获得通过SPY++,这个工具很简单,打开界面就会用了。
窗口获取句柄API以及依据句柄获取DC和指定像素点的色彩值的API:
CWnd* wnd = NULL;
dc.GetPixel(100, 100);
对话框上绘制像素点,可以用setpixel实现,也可以用fillrect实现,API:CBrush b(#ff0000); dc->FillRect(currect, &b);
定义全局快捷的相关API:
-----这是典型的回调函数,普通函数需要声明与定义,回调函数还需要注册与关联。
声明:afx_msg long OnHotKey(WPARAM wparam, LPARAM lparam);
定义:long CbellecompDlg::OnHotKey(WPARAM lparam, LPARAM wparam)
注册:RegisterHotKey(GetSafeHwnd(), 199, MOD_CONTROL, 'A');
RegisterHotKey(GetSafeHwnd(), 120, MOD_CONTROL, 'B');
关联消息:ON_MESSAGE(WM_HOTKEY, OnHotKey)
啊,程序员玩游戏真是无聊呀。