全屏游戏窗口化

angel_sha 2003-12-12 08:25:42
基于DIRECTX全屏游戏如何窗口化?望高手指点!!!
...全文
127 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
甜而不腻 2004-01-13
顶一下。
  • 打赏
  • 举报
回复
angel_sha 2003-12-27
我说的是让其他全屏的游戏窗口化呀

其实我也是认为拦截到SetCooperativeLevel函数就已经差不多了,可是该怎么拦这个函数呢
拦截API还是很容易的,可是怎样拦截DDRAW.DLL中的函数?望指教!!
  • 打赏
  • 举报
回复
LunTanZeng 2003-12-13
UPUP

GZing
  • 打赏
  • 举报
回复
rainstormmaster 2003-12-13
同意 wuyuesisi(斯斯) 的意见
  • 打赏
  • 举报
回复
踏平扶桑 2003-12-13
up
  • 打赏
  • 举报
回复
wuyuesisi 2003-12-12
好象这个问题不该在这里提吧??
可以通过反汇编找到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
汇编和调试器使用的必要。






  • 打赏
  • 举报
回复
相关推荐
发帖
非技术类
加入

726

社区成员

VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 08:25
社区公告
暂无公告