如何实现将窗体钉在桌面上(200分)

  • 主题发起人 主题发起人 foxling
  • 开始时间 开始时间
F

foxling

Unregistered / Unconfirmed
GUEST, unregistred user!
rt.近来看到一些桌面秀的软件,可以将窗体钉在桌面上。
觉得挺不错的,不知该如何实现?
 
就是在桌面不让移动?
你把窗口设置成无边界的,然后使用下面的命令设置试试?
setWindowPos(form1.Handle,HWND_BOTTOM,0,0,0,0,(SWP_NOMOVE Or SWP_NOSIZE));
 
钉.是不能动吗?
 
CSDN上面已经有人回答你了,那个方法不错!
 
回:网中戏
就是钉在桌面上,感觉像是桌面的图标一样,
按“显示桌面”按钮的时候,它也和其它图标一样,显示在桌面上。
同时,它又是一个窗体。就这样。
 
回:寻路
谢谢提醒,我这就去试一下。
 
直接往桌面画
 
无窗口边框就可以了。
 
那就要用到钩子了。拦截桌面重画消息。还可以把你的界面放在那些图标下面。
陈宽达的深度历险一书里有DEMO的。
 
谢谢各位的参与。问题已经基本解决,代码如下:
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;
 
后退
顶部