首页
社区
课程
招聘
[原创]把窗口化的DX魔兽变为全屏再画图
发表于: 2013-3-7 17:32 10055

[原创]把窗口化的DX魔兽变为全屏再画图

2013-3-7 17:32
10055

好吧,其实我是为了挂才写的。

魔兽是DX8,全屏独占的,我当初想在这种情况下在界面上绘图,用了好多种方法都是闪烁的问题(D3D HOOK可以,但是需要修改内存),GDI不可能比DX快。

由于启动魔兽的时候可添加-window参数使得魔兽以窗口模式运行,只要把这个窗口模式变为全屏模式,然后创建一个透明窗口置顶蒙在上面,在窗口上面画图,就可以了。

1全屏
第一步,全屏需要隐藏任务栏(显示任务栏)。

BOOL HideTaskBar(BOOL Hide)
{
			#ifndef ABM_SETSTATE 
			#define ABM_SETSTATE 0x0000000a 
			#endif 
			HWND hWnd = FindWindow("Shell_TrayWnd", NULL);

			if(hWnd==NULL)
			{
				return FALSE;
			}

		   int nCmdShow;
		   APPBARDATA apBar; 
		   memset(&apBar,0,sizeof(apBar)); 
		   apBar.cbSize = sizeof(apBar); 
		   apBar.hWnd =hWnd;


		   	if(Hide)
			{
				nCmdShow=SW_HIDE;
				apBar.lParam=ABS_AUTOHIDE;
			}
			else
			{
				nCmdShow=SW_SHOW;
				apBar.lParam=ABS_ALWAYSONTOP;
			}


		   SHAppBarMessage(ABM_SETSTATE,&apBar);
		   ShowWindow(hWnd,nCmdShow);
		   return TRUE;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 5199
活跃值: (3437)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用GDI吧~~现在的ping不都是gdi画么 ~~~~
2013-3-7 18:31
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
关键是然后呢
2013-3-7 19:21
0
雪    币: 226
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这样不是挺好的么。。。
2013-3-7 21:05
0
雪    币: 297
活跃值: (265)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
5
然后
直接读取位置在你的图上标记就是了么
2013-3-8 12:25
0
雪    币: 1392
活跃值: (5177)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
6
是的~,就是坐标转换有点不准确。
2013-3-8 17:00
0
雪    币: 297
活跃值: (265)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
7
嗯 其实论坛关于war3有很多好帖
但是都给埋了。。。
2013-3-8 17:20
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
qq输入法就可以在DX全屏独占模式下正常显示,但是不能有输入控件,显示和事件响应没有问题的
2013-3-8 17:25
0
游客
登录 | 注册 方可回帖
返回
//