我在一个勾子程序中,使用了象网络蚂蚁那样的一个小窗口,我用
SetWindowPos(Form1.handle, HWND_TOPMOST,Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);使窗口总在最前面。但屏保发生后我的窗口不见了,我试了多次,发现把窗口的半透明效果去掉就可以,但别人是半透明的,他们的窗口却还再!

解决方案 »

  1.   

    你怎么知道他们的东西不在timer响应函数里面重复执行SetWindowPos(Form1.handle, HWND_TOPMOST,Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);呢?
      

  2.   

    我试着放了个TIMER,不断的重负着SetWindowPos(Form1.handle, HWND_TOPMOST,Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);但还是没有,屏保发生后窗口仍然不可见!
      

  3.   

    看你重复问这个问题,我刚才做了一个,根本没有问题吗,你有没有用wndParent:=GetDesktopWindow将你的窗口的父窗口设为桌面
      

  4.   

    public
      procedure Createparams(Var Params:TCreateParams);override;
    .....
    ......
    procedure TForm1.Createparams(var Params:TCreateParams);
    begin
      Inherited CreateParams(Params);
      With Params do
      begin
        EXStyle:= WS_EX_TOPMOST;
        wndParent:=GetDesktopWindow;
      end;
    end;修改窗口的参数,wndparent是他的父窗口