请教:怎么使VC的对话框一直保持最前端??

青松2 2013-11-18 11:46:05
在OnInitDialog中加入下面一句:
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
一开始还可以置顶,但是打开其他软件后,界面却被其他软件挡住了!

怎么让界面像迅雷一样一直保持最前端?

谢谢了

...全文
463 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanyufeng_521 2013-11-22
  • 打赏
  • 举报
回复
楼上的是全屏吧
lt114896 2013-11-22
  • 打赏
  • 举报
回复
SetWindowPos(CWnd::FromHandle(HWND_TOPMOST), 0, 0, ::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
bsnry 2013-11-19
  • 打赏
  • 举报
回复
迅雷可以一直吗? 不可能吧
青松2 2013-11-19
  • 打赏
  • 举报
回复
引用 5 楼 dingxz105090 的回复:
如果担心其他程序也无耻的写了这样的语句,那你得定时SetWindowPos
为中华IT业之崛起而coding!
凌乱哥 2013-11-19
  • 打赏
  • 举报
回复
引用 8 楼 xiaohuh421 的回复:
这个函数的意思是设置窗口的位置, 包括z-order顺序位置. 既然你可以调用, 那么别的程序当然也可以调用. 所以你相保持最前, 那么必须得一直一直不停的调用此函数. 或者更直接点的是hook掉这个API, 让别的程序没法设置. 当然, 还要考虑的创建时设置成topmost的情况.
那万一别的程序也hook掉这个API, 让别的程序没法设置,那怎么破。。。 窗口置顶就像是一块奶油面包,一大群苍蝇蟑螂蚊子正在靠近。。。。。
xiaohuh421 2013-11-19
  • 打赏
  • 举报
回复
这个函数的意思是设置窗口的位置, 包括z-order顺序位置. 既然你可以调用, 那么别的程序当然也可以调用. 所以你相保持最前, 那么必须得一直一直不停的调用此函数. 或者更直接点的是hook掉这个API, 让别的程序没法设置. 当然, 还要考虑的创建时设置成topmost的情况.
sg_knight 2013-11-19
  • 打赏
  • 举报
回复
[quote=引用 4 楼 dingxz105090 的回复:] InitDialog中写上

AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
凌乱哥 2013-11-19
  • 打赏
  • 举报
回复
突然发现菇凉深夜近12点还在认真钻研,实乃程序员们的楷模啊。。。
凌乱哥 2013-11-19
  • 打赏
  • 举报
回复
如果担心其他程序也无耻的写了这样的语句,那你得定时SetWindowPos
凌乱哥 2013-11-19
  • 打赏
  • 举报
回复
InitDialog中写上

AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
已测试有效,菇凉请大胆使用,大胆验证
打你屁屁 2013-11-19
  • 打赏
  • 举报
回复
::SetWindowPos(this->GetSafeHwnd(), CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
tiantian1980 2013-11-19
  • 打赏
  • 举报
回复
哪应是win32的API来弄吧,你获得应是桌面窗体,不是应用程序的窗体
快乐鹦鹉 2013-11-19
  • 打赏
  • 举报
回复
有的说用GetForegroundWindow() 获取窗口句柄。不过没试过
u0116snail 2013-11-19
  • 打赏
  • 举报
回复
这个问题我以前遇到过,解决方法就是重启系统外壳程序

15,978

社区成员

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

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