MFC版美女找茬

今天心情:捡了个闲暇。

前几天工作出了个漏洞,电话会议时候怎么都是忽大忽小的声音,实在没听清电话会议的内容,完了依据想象交了一个设计方案,之后便是赋闲。

进入正题,美女找茬实现不难,没有设计上的难度,找到API即可,API的顺序如下:

1.对话框的透明、置顶、穿透属性实现。

-----自然得洋气一点,那种半透明的、不小心点了鼠标就把游戏窗口的焦点整没的一定不能要。

2.查找QQ游戏窗口的名称以及获得句柄。

-----SPY++获得窗口名称,FindWindow获得指定名称窗口的句柄。

3.移动对话框将之覆盖到美女找茬左侧或者右侧的图片上

-----MoveWindow,移动窗口并改变大小,最后一个参数指定是否重绘窗口

4.依据QQ游戏窗口句柄获得指定位置的像素

-----Handle初始化DC,依据DC的GetPixel方法获得指定像素点的颜色。

5.透明对话框上绘制不透明的像素点

-----犯难很久才搞定,窗口属性指定透明颜色、设置窗口背景为透明色、绘制时采用不透明色进行绘制。

6.定义全局快捷键

-----对话框又透明又穿透的,鼠标已经奈何不了它了,来全局快捷键吧

以下仅给出相应的API调用样例,有兴趣的朋友自行组装,不想动手做只想哄女朋友的同学抱歉啦。

窗口透明以及鼠标穿透的API: SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE,

            GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) | 
            WS_EX_TRANSPARENT | //鼠标穿透
            WS_EX_LAYERED        //图层窗口
            );

指定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;

wnd = FindWindow(NULL, _T("QQ游戏-美女找茬"));

CPaintDC dc(wnd);

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)

{
if(lparam == 199)
{
AfxMessageBox(_T("global hotkey  a"));
return 0;
}
else if(lparam == 120)
{
AfxMessageBox(_T("global hotkey b"));
return 0;
}
return 0;

}

注册:RegisterHotKey(GetSafeHwnd(), 199, MOD_CONTROL, 'A');
RegisterHotKey(GetSafeHwnd(), 120, MOD_CONTROL, 'B');

关联消息:ON_MESSAGE(WM_HOTKEY, OnHotKey)

啊,程序员玩游戏真是无聊呀。

上一篇:UVa 10720 - Graph Construction


下一篇:HDU 6199 2017沈阳网络赛 DP