来者又分!MFC窗口怎么放在前面?不是置顶操作!

pirates_fish 2011-10-26 03:54:57
弹出一个窗口,会跑到最底下去,调用时想把它放在最前面。

我试过了,不是用SetWindowPos,会一直置顶

请问我应该如何操作?
...全文
804 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aizeng 的回复:]
BOOL SetForegroundWindow(HWND hWnd);
[/Quote]
++
用户 昵称 2011-10-27
  • 打赏
  • 举报
回复
先最前,然后取消最前。
xhb296 2011-10-27
  • 打赏
  • 举报
回复
SetActiveWindow 就可以
liujie250079934 2011-10-27
  • 打赏
  • 举报
回复
你是想让你的程序弹出的子对话框一直在你程序的最前面??
这样建立个模式对话框试试。
如果是想让程序一直在桌面窗口的最前面 就用
::SetWindowPos( yourWndHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION )
乡客2023 2011-10-27
  • 打赏
  • 举报
回复
没遇过!
前一个ShowWindow(SW_HIDE);
后一个MoveWindow
ShowWindow(SW_SHOW)
wodesanmaoqian 2011-10-27
  • 打赏
  • 举报
回复
没遇过,MARK下
xzh5507 2011-10-27
  • 打赏
  • 举报
回复
都很专业,帮顶@!
Ginie 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aizeng 的回复:]
BOOL SetForegroundWindow(HWND hWnd);
[/Quote]
++
gold_water 2011-10-27
  • 打赏
  • 举报
回复
应该这个SetActiveWindow 就可以实现LZ的目的了
战在春秋 2011-10-27
  • 打赏
  • 举报
回复
BOOL WINAPI SetForegroundWindow(
__in HWND hWnd
);
应该就是这个函数。
czg1984 2011-10-26
  • 打赏
  • 举报
回复
要想确保自己的界面在最前面,必须保证置顶,但这个问题你可以换个思路:
在弹出时,设置该窗口置顶,但加载OnKillFocus这个消息函数处理。当其他窗口弹出时,会触发当前窗口失去焦点的消息,进入OnKillFocus,在这个消息函数里做一个当前窗口的隐藏处理。
lionpl 2011-10-26
  • 打赏
  • 举报
回复
SetForegroundWindow就行了
hideforever 2011-10-26
  • 打赏
  • 举报
回复
SetForegroundWindow
示申○言舌 2011-10-26
  • 打赏
  • 举报
回复
永远在顶的窗口:

::SetWindowPos( yourWndHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION );
gameslq 2011-10-26
  • 打赏
  • 举报
回复
直接用这一个函数SetForegroundWindow
carter10004 2011-10-26
  • 打赏
  • 举报
回复
看了前面4个字,我就过来了
HBack 2011-10-26
  • 打赏
  • 举报
回复
这个没弄过 来学习学习
dfkjsdhfks 2011-10-26
  • 打赏
  • 举报
回复
1.SetWindowPos 先置顶,然后马上取消掉置顶
2.SetForegroundWindow
保持关注...
piplu 2011-10-26
  • 打赏
  • 举报
回复
你试一下建立一个模态对话框看看!
gibsonboy 2011-10-26
  • 打赏
  • 举报
回复
SetActiveWindow + SetForegroundWindow
加载更多回复(7)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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