基于DIRECTX全屏游戏如何窗口化?望高手指点!!!
解决方案 »
- Snapshot Object 在使用MoveNext 循环到一半时突然报错
- listview如何在不加数据的情况下,初始化表头呀,为何我的代码执行后,表头没有显示呢?
- data report的function控件
- 用DataReport显示 分组 报表的 问题?
- 还是有关线程的问
- 如何实现这个图像处理功能?(可能是关于图像组合保存方面的)多谢了!
- 关于 软件版本问题 !!!偶是菜鸟
- 有关读取文件的问题
- 電腦高手看過來,馬上付款!
- 为什么这的SHTML页面不响应键盘??
- 请教各位大侠ado控件与access的编程
- 各位高手:如何取得win98系统列表中的所有Modem供应商及型号?困了好几天了,请帮帮忙!
可以通过反汇编找到DirectDrawCreate函数的入口点,然后设断。
中断后返回领空再跟踪。
设置协调模式的函数原型是 SetCooperativeLevel,:PTR IDirectDraw,:HWND hWnd,:DWORD dwFlags
关键是第三个参数它有如下取值
DDSCL_EXCLUSIVE 独占模式,此模式必须与 DDSCL_FULLSCREEN连用
DDSCL_FULLSCREEN 全屏模式
DDSCL_NORMAL 普通模式,也就是我们所说的窗口模式,此模式不能与DDSCL_EXCLUSIVE 或DDSCL_FULLSCREEN连用
DDSCL_NOWINDOWCHANGES DirectDraw不允许改变窗体的大小
一般来说全屏模式下dwFlags的值是 DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN
要改的只是把这个参数的值改为DDSCL_NORMAL。
具体取值如下
#define DDSCL_EXCLUSIVE 10h
#define DDSCL_FULLSCREE 1h
#define DDSCL_NORMAL 8h
#define DDSCL_NOWINDOWCHANGES 4h
汇编和调试器使用的必要。
拦截API还是很容易的,可是怎样拦截DDRAW.DLL中的函数?望指教!!