如何使窗口永远在最顶层

guzh 2004-04-27 01:37:56
就是在玩游戏时也能在最前面.
好像用SetWindowPos 设置WS_EX_TOPMOST时在玩游戏时不行的,有没有什么方法啊.

我在"VC/MFC 基础类问题"区问了,
http://expert.csdn.net/Expert/topic/3007/3007988.xml?temp=.9444696

但没有具体答案.是要用到DirectX的函数吧.


...全文
239 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xeroo 2004-05-12
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/ddraw7/directdraw7/ddover_46nr.asp
guzh 2004-04-29
  • 打赏
  • 举报
回复
昨天在VCKBASE(http://www.vckbase.com/code/listcode.asp?mclsid=7&sclsid=711&page=1
)找了个"在DirectX下弹出对话框"的源码,是可以弹出窗口,但如果把屏幕设为32色的时候它不能弹出来了,还有当他弹出来的时候游戏的画面是会停顿的,这不符合我的要求啊.

我发现它只是以游戏窗口作为父窗口然后创建一对话框,可能就是这个原因造成停顿了.

//获取前台窗口
HWND hWnd = ::GetForegroundWindow();
//创建并显示模式对话框
::DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_MAIN_DIALOG), hWnd, DLGPROC(DialogProc));


大家还有例子吗?
i_noname 2004-04-28
  • 打赏
  • 举报
回复
toymaker所说的是一个好方法吧,关于闪烁问题,我想可以用解决动画闪烁的方法来解决,就是游戏每刷新一次,你就先把游戏画面和你的窗口在内存先画一次,再贴到屏幕上。
没试过,空想的
guzh 2004-04-28
  • 打赏
  • 举报
回复
这个应该很多人想知道的,有那个大哥教教啊!

最好能做到可以输入文字和移动窗口.

版主置顶吧!!
测试九宸 2004-04-28
  • 打赏
  • 举报
回复
在玩游戏时,游戏在全屏模式下都是独占方式,而且是不断刷新屏幕运行的,所以应该没什么好的方法来显示一个窗口。

我所知道的方法(效果很不好,不过还是能用的):
(用API函数getdesktop获得桌面句柄, 然后用getdc获得桌面DC,然后不停的画你的对话框应该可以显示出来,这个方法可以在游戏运行时运用,不过显示效果不好,会不停的闪动,就是由于游戏的界面在不停的刷新的原因)

要想显示好效果,除非先暂停游戏的刷新,然后自己画一个窗口,然后运行你的刷新。至于这个方法我也不会,有那个大哥教教吧!

allsword 2004-04-28
  • 打赏
  • 举报
回复
overlay surface,就是一个永远显示在screen最上头(top most)的一种特殊surface,
它并不附属(attached)于任何surface,独立于所有的front buffer,back buffer之外,
overlay surface 是除了primary surface之外唯一可见的surface.
由于它独立在所有的surface之外,因此它不会影响到我们使用的primary surface,
back buffer,off-screen surfaces.
关于overlay例子可参考SDK下的overlay例子。
GameWeaverDummy 2004-04-27
  • 打赏
  • 举报
回复
wlpwind 2004-04-27
  • 打赏
  • 举报
回复
可能要用directx技术。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧