我有这些小光标形状的形状,我需要一直在所有的一切,... ...
FormStyle
已经fsStayOnTop
了
我使用这段代码:
SetWindowPos(tempCursor.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE );
和这(虽然我不知道它的作用):
procedure TCursorFrm.CreateParams(var Params: TCreateParams);
const
WS_EX_NOACTIVATE = $8000000;
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
但我仍然无法将我的表格放在TMenuItems之上。 如何让我的表格保持在一切之上?
答案 0 :(得分:4)
我认为这会和你一样好。如果您的表单停留在菜单的顶部,则用户在打开菜单时将无法看到菜单。做这样的事情,特别是当系统没有通过任何简单的手段使其可用时,与恶意接壤,或至少感觉到这种方式。你不希望你的用户认为你的程序是恶意的,所以我的建议是不要试图这样做。
答案 1 :(得分:4)
这必须是我要发布的最终或最糟糕的hackery。
在OnTimer事件中,输入以下代码:
如果可见的话 SetWindowPos(Self.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE或SWP_NOMOVE或SWP_NOACTIVATE);
我在我的一个项目中使用它,似乎工作正常。
答案 2 :(得分:2)
快速,轻微修复:从计时器中调用,每秒10次:
BringWindowToTop(Handle)
试了一下就可以了!也许你可以找到一种方法让它不那么“蛮力”,但我不确定如何。
答案 3 :(得分:2)
我认为您可以查看DirectX。我相信它允许覆盖主图像。您可以在非exlusive模式下打开它,并在桌面上绘制叠加层。但我不确定。只是一个猜测。
答案 4 :(得分:0)
或代替SetWindowPos命令 - 试试这个:
if visible then form1.SetFocus;