如何让一个窗口永远在另外一个窗口上面 如何让一个窗口永远在另外一个窗口上面,这两个窗口不能是父子关系。请高手解答,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己用个定时器不断检查是否在另外一个窗口上面,不是的话用SetWindowPos设置下就好了。 谢谢,不过这样不是要每时每刻不停的执行SetWindowPos,另外要如何判断自己是不是在另一个窗口上呢 谢谢,不过这样不是要每时每刻不停的执行SetWindowPos,另外要如何判断自己是不是在另一个窗口上呢 谢谢,不过这样不是要每时每刻不停的执行SetWindowPos,另外要如何判断自己是不是在另一个窗口上呢 设置个0.1秒的定时器,不是每时每刻执行SetWindowPos,是先检查,不在的话再执行SetWindowPos。复杂点的话hook另外一个窗口的进程的WM_PAIT消息,然后再执行SetWindowPos 顶层显示SetWindowPos(hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW) SetWindowPos设置它们的Z-order,只要一个比另一个大就行了 谢谢,不过setwindowpos不是只能设置置顶、置底、和在某个窗口后面吗?你说的z-order比它大就行了,这个要怎么做到呢?能麻烦给个代码看看吗 BOOL SetWindowPos( HWND hWnd, //窗口句柄 HWND hWndInsertAfter, //排列顺序的句柄 int X, //水平坐标 int Y, //垂直坐标 int cx, //宽 int cy, //高 UINT uFlags //窗口定位标识); 说明:这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。 返回值: BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。参数表:hWnd:欲定位的窗口句柄 hWndInsertAfter:置于hWnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一: HWND_BOTTOM 将窗口置于其它所有窗口的底部 HWND_NOTOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响 HWND_TOP 将窗口置于它所有窗口的顶部 HWND_TOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态 x:指定窗口新的X坐标Y:指定窗口新的Y坐标 cx:指定窗口新的宽度 cy:指定窗口新的高度 wFlags: UINT,指定窗口状态和位置的标记。这个参数使用下面值的组合: SWP_DRAWFRAME 围绕窗口画一个框 SWP_FRAMECHANGED 发送一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有发生改变。如果不指定这个参数,消息WM_NCCALCSIZE只有在窗口大小发生改变时才发送 SWP_HIDEWINDOW 隐藏窗口 SWP_NOACTIVATE 不激活窗口 SWP_NOCOPYBITS 屏蔽客户区域 SWP_NOMOVE 保持当前位置(X和Y参数将被忽略) SWP_NOOWNERZORDER 不改变所有窗口的位置和排列顺序 SWP_NOREDRAW 窗口不自动重画 SWP_NOREPOSITION 与SWP_NOOWNERZORDER标记相同 SWP_NOSENDCHANGING 防止这个窗口接受WM_WINDOWPOSCHANGING消息 SWP_NOSIZE 保持当前大小(cx和cy会被忽略) SWP_NOZORDER 保持窗口在列表的当前位置(hWndInsertAfter将被忽略) SWP_SHOWWINDOW 显示窗口 备注: 如果设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW标记,这个窗口不发生移动或改变大小。窗口成为最顶级窗口后,它的所有子窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有子窗口也会转为非最顶级 如何在自定义类中获得框架类指针 右键菜单弹出后,窗口接收不到键盘消息 超菜鸟级问题 用LoadImage载入图片后,怎么获得图片大小 有沈阳的VC程序员吗? 如何把一个路径加到系统路径中? 为什么编译不能通过? 请问指针与句柄的区别,它们之间怎样相互转换? 求救:线程代码外插的奇怪问题 MFC 如何序列化动态数组? 请教关于CDC资源释放的问题。 用vs2010每次建mfc工程都要加载/解析一遍头文件,时间很长
复杂点的话hook另外一个窗口的进程的WM_PAIT消息,然后再执行SetWindowPos
SetWindowPos(hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW)
(
HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识
);
说明:这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。
返回值:
BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。
参数表:
hWnd:欲定位的窗口句柄
hWndInsertAfter:置于hWnd前面的窗口句柄。
这个参数必须是窗口的句柄或是下面的值之一:
HWND_BOTTOM 将窗口置于其它所有窗口的底部
HWND_NOTOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响
HWND_TOP 将窗口置于它所有窗口的顶部
HWND_TOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态
x:指定窗口新的X坐标
Y:指定窗口新的Y坐标
cx:指定窗口新的宽度
cy:指定窗口新的高度
wFlags:
UINT,指定窗口状态和位置的标记。这个参数使用下面值的组合:
SWP_DRAWFRAME 围绕窗口画一个框
SWP_FRAMECHANGED 发送一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有发生改变。如果不指定这个参数,消息WM_NCCALCSIZE只有在窗口大小发生改变时才发送
SWP_HIDEWINDOW 隐藏窗口
SWP_NOACTIVATE 不激活窗口
SWP_NOCOPYBITS 屏蔽客户区域
SWP_NOMOVE 保持当前位置(X和Y参数将被忽略)
SWP_NOOWNERZORDER 不改变所有窗口的位置和排列顺序
SWP_NOREDRAW 窗口不自动重画
SWP_NOREPOSITION 与SWP_NOOWNERZORDER标记相同
SWP_NOSENDCHANGING 防止这个窗口接受WM_WINDOWPOSCHANGING消息
SWP_NOSIZE 保持当前大小(cx和cy会被忽略)
SWP_NOZORDER 保持窗口在列表的当前位置(hWndInsertAfter将被忽略)
SWP_SHOWWINDOW 显示窗口
备注:
如果设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW标记,这个窗口不发生移动或改变大小。窗口成为最顶级窗口后,它的所有子窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有子窗口也会转为非最顶级