各位高手,小弟想将创建的窗口始终保持最上面, 是所有窗口的最上面,即使打开了象Window任务管理器这样的窗口,我的窗口也要在它的上面(即使我的窗口没激活 如上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题我们的项目中也遇到过,用普通的办法是没法解决的可能有人会说用TopMost属性,但任务管理器,windows任务栏同样具有topmost属性,所以他们之间是可以切换的所以用了一系列手段来保证我们的界面在最前面,如屏蔽window热键,修改注册表使任务管理器被禁用之类的具体我不太清楚,毕竟不是我做的 感谢一楼的回答,那么就是说要更改系统的原有设置了啊,屏蔽window热键,修改注册表使任务管理器被禁用之类,这样用户就没法用这些东西了,有没有不更改设置办法?谢谢 修改注册表在Vista下不能被支持吧。 Easy!USE API: SetWindowPos可以使你的窗口处于最前端 Easy! USE API: SetWindowPos 可以使你的窗口处于最前端 ================================但是当我打开Window任务管理器之类的程序时,我的程序又到下面去了我想让我的程序始终在最上面,即使它没有被激活 有个高手写了个tooltip风格的窗口,处于最前端,打开Window任务管理器之类的程序时也在最上面。一般窗口怎么做到我还不会http://www.codeproject.com/KB/miscctrl/tooltipzen.aspx 有个高手写了个tooltip风格的窗口,处于最前端,打开Window任务管理器之类的程序时也在最上面。 一般窗口怎么做到我还不会 http://www.codeproject.com/KB/miscctrl/tooltipzen.aspx ========================================================我去下载了 他哪个也不行啊 仍旧会在下面 MessageBox中有个MB_SYSTEMMODAL好像有个功能,窗口就不清楚了 楼上,对话框也有systemmodal属性,但是效果和topmost一样 这个要求确实太过分。不过做法的思路是:1. 先设置topmost属性2. 监控主窗口Z-order属性,如果发现改变之后,立即将程序主窗口设置为最上面。但这样做的话,当出现楼上所说的情况,你的程序会造成系统死锁,是一种极端危险的做法。 过分吗?你是没遇到过这样的项目,这样的实际需求我们的项目就是要让用户完全隔离windows系统,使系统对用户完全不可见,你说不这样咋整? 过分吗? 你是没遇到过这样的项目,这样的实际需求 我们的项目就是要让用户完全隔离windows系统,使系统对用户完全不可见,你说不这样咋整? ---------------------------------------------------------------------------虚拟桌面就行了。 这个要求确实太过分。 不过做法的思路是: 1. 先设置topmost属性 但这样做的话,当出现楼上所说的情况,你的程序会造成系统死锁,是一种极端危险的做法。=====================================================================怎么判断 2. 监控主窗口Z-order属性,如果发现改变之后,立即将程序主窗口设置为最上面。 给个思路啊 监控Z-order 首先编写窗口的位置、大小和活动相关的消息处理函数,然后在这些函数里使用GetNextWindow来确认本窗口是不是最上层窗口。需要处理的消息大概有这些:WM_SIZE, WM_WINDOWPOSCHANGE WM_MOVE,WM_NCCALCSIZE等。 SetWindowPos或者MoveWindow就可以实现啊 SetWindowPos或者MoveWindow就可以实现啊======================================================能说一下具体怎么弄么 SetWindowPos看参数说明:BOOL SetWindowPos( HWND hWnd, // handle to window HWND hWndInsertAfter, // placement-order handle int X, // horizontal position int Y, // vertical position int cx, // width int cy, // height UINT uFlags // window-positioning options);例子:SetWindowPos(m_hWnd,HWND_TOP,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);m_hWnd --> mfc窗口句柄 在 InitInstance 函数中加上下面的代码:SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); //OnTop就可以实现:窗口始终保持最上面, 是所有窗口的最上面,即使打开了象Window任务管理器这样的窗口,我的窗口也要在它的上面(即使我的窗口没激活)另程序中如果有需要还可以处理一下关闭,和最小化,等事件。但是如果你强调的是绝对,永远,就是accsoar所说的他们客户要求的隔离系统的那种,那你还需要去对键盘鼠标的事件等做一些处理,防止用户从键盘鼠标调到其他程序,且调用的程序也拥有Top属性。 在 InitInstance 函数中加上下面的代码: SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE ¦ SWP_NOSIZE); //OnTop 就可以实现: 窗口始终保持最上面, 是所有窗口的最上面,即使打开了象Window任务管理器这样的窗口,我的窗口也要在它的上面(即使我的窗口没激活) 我编了 做不到啊 呵呵 感谢各位的回答 谢谢 带小数点的数可以以字符串的形式进行比较大小吗 VC6.0不显示DOS控制台 VC中CTreeCtrl和xml文件的互导 大家都来说说联众游戏是如何实现的?斑竹请进 考研好还是搞计算机技术好啊?? 请指点迷津 RichEdit中的COM问题!!! 一个蠢问题:什么函数用于ascii的转化 遇到一个MFC有关Domodal的问题 怎么用程序实现动态修改IP? < 怎么求直线的斜率 求助:SPIN的使用方法
可能有人会说用TopMost属性,但任务管理器,windows任务栏同样具有topmost属性,所以他们之间是可以切换的
所以用了一系列手段来保证我们的界面在最前面,如屏蔽window热键,修改注册表使任务管理器被禁用之类的
具体我不太清楚,毕竟不是我做的
但是当我打开Window任务管理器之类的程序时,我的程序又到下面去了
我想让我的程序始终在最上面,即使它没有被激活
一般窗口怎么做到我还不会
http://www.codeproject.com/KB/miscctrl/tooltipzen.aspx
一般窗口怎么做到我还不会
http://www.codeproject.com/KB/miscctrl/tooltipzen.aspx ========================================================
我去下载了 他哪个也不行啊 仍旧会在下面
1. 先设置topmost属性
2. 监控主窗口Z-order属性,如果发现改变之后,立即将程序主窗口设置为最上面。但这样做的话,当出现楼上所说的情况,你的程序会造成系统死锁,是一种极端危险的做法。
你是没遇到过这样的项目,这样的实际需求
我们的项目就是要让用户完全隔离windows系统,使系统对用户完全不可见,你说不这样咋整?
你是没遇到过这样的项目,这样的实际需求
我们的项目就是要让用户完全隔离windows系统,使系统对用户完全不可见,你说不这样咋整? ---------------------------------------------------------------------------虚拟桌面就行了。
1. 先设置topmost属性
但这样做的话,当出现楼上所说的情况,你的程序会造成系统死锁,是一种极端危险的做法。
=====================================================================
怎么判断 2. 监控主窗口Z-order属性,如果发现改变之后,立即将程序主窗口设置为最上面。
给个思路啊
需要处理的消息大概有这些:WM_SIZE, WM_WINDOWPOSCHANGE WM_MOVE,WM_NCCALCSIZE等。
======================================================
能说一下具体怎么弄么
BOOL SetWindowPos(
HWND hWnd, // handle to window
HWND hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
UINT uFlags // window-positioning options
);例子:
SetWindowPos(m_hWnd,HWND_TOP,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);m_hWnd --> mfc窗口句柄
SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); //OnTop就可以实现:
窗口始终保持最上面, 是所有窗口的最上面,即使打开了象Window任务管理器这样的窗口,我的窗口也要在它的上面(即使我的窗口没激活)另程序中如果有需要还可以处理一下关闭,和最小化,等事件。但是如果你强调的是绝对,永远,就是accsoar所说的他们客户要求的隔离系统的那种,那你还需要去对键盘鼠标的事件等做一些处理,
防止用户从键盘鼠标调到其他程序,且调用的程序也拥有Top属性。
SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE ¦ SWP_NOSIZE); //OnTop 就可以实现:
窗口始终保持最上面, 是所有窗口的最上面,即使打开了象Window任务管理器这样的窗口,我的窗口也要在它的上面(即使我的窗口没激活) 我编了 做不到啊 呵呵
感谢各位的回答 谢谢