Forms Delphi:带有fsStayOnTop的气球窗体在Win7中不工作
我有一个应用程序,使用我自己的气球形式。 这是一种无边框的fsStayOnTop类表格 我用以下代码显示它:Forms Delphi:带有fsStayOnTop的气球窗体在Win7中不工作,forms,delphi,window,balloon,topmost,Forms,Delphi,Window,Balloon,Topmost,我有一个应用程序,使用我自己的气球形式。 这是一种无边框的fsStayOnTop类表格 我用以下代码显示它: ShowWindow(Handle, SW_SHOWNOACTIVATE); Visible := True; 今天我意识到,如果我激活另一个应用程序,气球就不会出现! 所以它正在失去它的顶级风格 环境: Win7/x64 德尔福6专业 我能用它做什么 谢谢: dd过去,在努力保持最佳状态时,什么对我有效: Form := TMyForm.Create(Self); Applicati
ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;
今天我意识到,如果我激活另一个应用程序,气球就不会出现!
所以它正在失去它的顶级风格
环境:
Win7/x64
德尔福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
调用(因此应用程序中的其他保持在顶部的窗口将受到影响)。因此可能有更好的解决方案。我尝试了上述解决方案,但在第二种形式上不起作用。我相信它会在一个主要形式上起作用,但不会在次要形式上起作用。然而,我确实找到了一个适用于二级表单的解决方案,这听起来像是原始海报想要的,因为“气球表单”通常是一个弹出窗口
将其放入“Form B”OnCreate事件中:
FormStyle:=fsStayOnTop强>
但光是这一点还不够
将at应用程序事件拖到“表格B”上
在ApplicationEvents1的OnActivate事件中,添加以下内容:
SetForegroundWindow(手柄)强>
当我的主要表单处理站点外的数据时,我会一直关注一个小的状态窗口。工作得很漂亮