use*_*145 4 forms delphi z-order
我想要一个表格,当我设置在z顺序的底部时,它停留在那里.我试过了:
SetWindowPos(Handle,HWND_BOTTOM,Left,Top,Width,Height,SWP_NOZORDER);
Run Code Online (Sandbox Code Playgroud)
当我与其他一些应用程序重叠时,它会根据需要保留在底部.但是,当我点击它时,它会升到顶部.然后我尝试了:
SetWindowPos(Handle, HWND_BOTTOM, Left, Top, Width, Height,
SWP_NOACTIVATE or SWP_NOZORDER);
Run Code Online (Sandbox Code Playgroud)
以及来自这个网站的各种其他交换机... http://msdn.microsoft.com/en-us/library/ms633545.aspx
但它仍然升至顶峰.
SetWindowPos仅在调用窗口时才设置窗口的位置,它不会建立状态.处理WM_WINDOWPOSCHANGING是执行此操作的正确方法:
在处理此消息时,修改WINDOWPOS中的任何值会影响窗口在Z顺序中的新大小,位置或位置.应用程序可以通过设置或清除WINDOWPOS的flags成员中的相应位来阻止对窗口的更改.
type
TForm1 = class(TForm)
..
private
procedure WindowPosChanging(var Msg: TWMWindowPosMsg);
message WM_WINDOWPOSCHANGING;
end;
..
procedure TForm1.WindowPosChanging(var Msg: TWMWindowPosMsg);
begin
if Msg.WindowPos.flags and SWP_NOZORDER = 0 then
Msg.WindowPos.hwndInsertAfter := HWND_BOTTOM;
inherited;
end;
Run Code Online (Sandbox Code Playgroud)