重载Createparams,改变窗体风格,设置父句柄为桌面,代码大概如下:private procedure Createparams(var params: TCreateParams);override;procedure TForm1.Createparams(var params: TCreateParams); begin inherited CreateParams(Params); with params do begin params.Style:=WS_POPUP {or WS_BORDER}; params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE; params.WndParent:=getDeskTopWindow; end; end;
Createparams方法不错,我刚试过没有问题
Createparams这个方法很好。
通过重载Createparams方法可以实现很多窗口功能
首先,谢谢liangqingzhi(老之)的回答,还有各位的参与。 我刚刚试了一下,有点意思了,不过和我说的还有一点差别。 我希望的钉在桌面上: 是钉在桌面上,感觉像是桌面的图标一样, 按“显示桌面”按钮的时候,它也和其它图标一样,显示在桌面上。 同时,它又是一个窗体。我可以设置的我右键菜单,对它进行控制,这这样。按照liangqingzhi的方法,会使窗体总在最前, 如果改成如下形式,即去掉WS_EX_TOPMOST。 //params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE; params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE; 按“显示桌面”按钮的时候,这个窗体又无法停留在桌面上。希望liangqingzhi和各位高手再帮帮忙,不胜感激。
改了一下:procedure TForm1.Createparams(var params: TCreateParams); begin inherited CreateParams(Params); with params do begin Style:=WS_POPUP; ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE; WndParent := GetWindow(FindWindow('Progman', nil), GW_CHILD); end; end;
procedure Createparams(var params: TCreateParams);override;procedure TForm1.Createparams(var params: TCreateParams);
begin
inherited CreateParams(Params);
with params do
begin
params.Style:=WS_POPUP {or WS_BORDER};
params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
params.WndParent:=getDeskTopWindow;
end;
end;
Createparams这个方法很好。
我刚刚试了一下,有点意思了,不过和我说的还有一点差别。
我希望的钉在桌面上:
是钉在桌面上,感觉像是桌面的图标一样,
按“显示桌面”按钮的时候,它也和其它图标一样,显示在桌面上。
同时,它又是一个窗体。我可以设置的我右键菜单,对它进行控制,这这样。按照liangqingzhi的方法,会使窗体总在最前,
如果改成如下形式,即去掉WS_EX_TOPMOST。
//params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
按“显示桌面”按钮的时候,这个窗体又无法停留在桌面上。希望liangqingzhi和各位高手再帮帮忙,不胜感激。
begin
inherited CreateParams(Params);
with params do
begin
Style:=WS_POPUP;
ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
WndParent := GetWindow(FindWindow('Progman', nil), GW_CHILD);
end;
end;
也感谢各位的参与。WndParent := GetWindow(FindWindow('Progman', nil), GW_CHILD);
这句代码的意思,还不太明白