如何使用win32 api将我的应用程序窗口放在Windows桌面窗口层次结构中的某个位置?

时间:2010-02-03 21:55:40

标签: c++ windows winapi

我希望我的应用程序窗口位于窗口层次结构中的某个位置。也就是说,我桌面上有3个窗口。在最底部我有Word,单词顶部的窗口是explorer,活动的前景窗口是itunes。我想将我的应用程序窗口置于单词之上但在探索器之下。如何使用win32实现这一目标?

3 个答案:

答案 0 :(得分:3)

您可以使用SetWindowPos - 查看hWndInsertAfter参数。我不确定这是否适用于流程边界,但值得一试。在创建窗口之后但在使其可见之前执行此操作。

答案 1 :(得分:0)

这很可能是不可能的,因为您会被试图阻止焦点窃取的代码所困扰 - 如果您的应用最初具有焦点并且您尝试将其放弃(例如,您在顶部,那么您可能会有效)试着隐藏在资源管理器窗口后面)

答案 2 :(得分:0)

如果您想保持这种安排,最简单的方法是创建指定单词窗口作为父窗口的窗口

否则SetwindowPos是用于控制窗口位置,可见性和深度的全能工作者。但是,一旦用户实际开始切换任务,这里执行的任何z排序显然都会丢失。

需要注意的一件事是:窗口始终将活动窗口提升到z顺序的顶部,同样,激活移动到z顺序顶部的任何窗口。但是有一些限制: - 防止各种令人不快的行为Windows防止应用程序在没有用户交互的情况下窃取激活 - 这意味着,如果word当前是活动窗口,SetWindowPos将自己置于Word之上只有在允许您的应用程序时才会成功在那个时候激活。