我有一个使用我自己的气球表单的应用程序。这是一个无边框的fsStayOnTop类型表单。
我用下面的代码来显示它:
ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;
今天我意识到,如果我激活另一个应用程序,然后气球不出现!所以它正在失去它的停留在顶部的样式。
环境:Win7/x64Delphi 6 Professional
我能用它做什么?
谢谢: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
调用(因此应用程序中的其他停留在顶部的窗口将受到影响)。所以可能会有更好的解决办法。
我尝试了上面的解决方案,但它在次要形式上不起作用。我相信它将工作在一个主要形式,但不是在一个次要形式。然而,我确实找到了一个解决方案,适用于第二种形式,这听起来像最初的海报想要的,作为一个"气球形式"。通常是弹出式。
把它放到"Form & "OnCreate事件:
FormStyle: = fsStayOnTop;
但这还不够…
将TApplicationEvents拖到您的"窗体"上
在ApplicationEvents1的OnDeactivate事件中,添加以下内容:
窗体提前(处理);
当我的主表单处理站点外的数据时,我会关注一个小的状态窗口。作品精美!