是否可以在当前聚焦的窗口后面显示弹出窗口?

时间:2014-07-16 11:16:24

标签: winapi c++builder-xe2

这是我用来在主要应用程序中间显示小弹出窗口的代码:

TForm_Popup::Show
{
   SetBounds(Form_Main->Left + ((Form_Main->Width - Width) >> 1), Form_Main->Top + ((Form_Main->Height - Height) >> 1), Width, Height); // set window position in the center of main window
   SetWindowLong(Handle, GWL_HWNDPARENT, (long)Form_Main->Handle); // popup window should be modal relative to main window of application
   SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER); // without this the window will not be shown
   ShowWindow(Handle, SW_SHOWNOACTIVATE);
   Visible = true;
}

当另一个顶级窗口处于活动状态时(由于SW_SHOWNOACTIVATE标志),弹出窗口确实显示没有窃取焦点。但是如果在调用TForm_Popup :: Show之前用户最大化了另一个窗口,则弹出窗口显示在它上面,这是不合需要的。是否可以更改弹出窗口仅在其父窗口(应用程序主窗口)的相应区域与另一个顶级窗口不重叠时才可见?因此,如果主要的应用程序形式完全落后于其他窗口,那么查看此主窗口的子窗口是不合逻辑的。

0 个答案:

没有答案