我有一个应用程序,使用自己的气球形式。这是一种非边框,fsStayOnTop类型的形式。
我使用以下代码显示它:
ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;
今天我意识到,如果我激活另一个应用程序,那么气球提示框就不会出现了!所以它失去了它的"置顶"风格。
环境: Win7/x64 Delphi 6专业版
我能做什么?
谢谢: dd
在我过去处理置顶窗体时,行之有效的方法:
Form := TMyForm.Create(Self);
Application.NormalizeTopMosts;
SetWindowPos(Form.Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOACTIVATE + SWP_NOMOVE + SWP_NOSIZE);
Form.Show;
尝试使用这个替代你的ShowWindow
调用。它会一直处于所有窗口的顶部(你真的想要这样吗?)。此外,它感觉有点不正规,因为它省略了文档中建议我们调用的RestoreTopMosts
调用(因此,应用程序中其他保持在顶部的窗口也会受到影响)。所以可能有更好的解决方案。
将以下内容放入“表单B”的OnCreate事件中:
FormStyle := fsStayOnTop;
但仅有此项还不够……
将TApplicationEvents拖动到您的“表单B”上
在ApplicationEvents1的OnDeactivate事件中,添加以下内容:
SetForegroundWindow(Handle);
当我的主表单正在处理数据时,我会关注一个小状态窗口。非常有效!