我现在使用UpdateLayeredWindow后,png图片做的窗体显示出来了,可form上的子控件却看不见了,不过依然存在,而且也响应相应的事件,我现在想请教高手,如何才能把子控件show出来啊。
我搜索到的一些答案似乎不起作用:
1. 子控件paintTo 
2. 在UpdateLayeredWindow调用前,先调用SetLayeredWindowAttributes,把子控件显示出来
这两个方法我都没有试验成功,也许是我的方法不对,还请高人指点一下,谢谢!

解决方案 »

  1.   

    我也遇到过你的情况,关注一下。我没有找到解决方法,我只是新建多一个form2出来,把窗体2的边全部去掉,再两个叠加,同步移动。
      

  2.   

    procedure TForm1.DoInvisible;
    var
      AControl : TControl;
      A, Margin, X, Y, CtlX, CtlY : Integer;
    begin
      Margin := ( Width - ClientWidth ) div 2;
      FullRgn := CreateRectRgn(0, 0, Width, Height);
      X := Margin;
      Y := Height - ClientHeight - Margin;
      ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
      CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );
      for A := 0 to ControlCount - 1 do begin
        AControl := Controls[A];
        if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
            then with AControl do begin
          if Visible then begin
            CtlX := X + Left;
            CtlY := Y + Top;
            CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
            CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
          end;
        end;
      end;
      SetWindowRgn(Handle, FullRgn, TRUE);
    以前写的函数,搂主参考下
      

  3.   

    无法显示的, 等VISTA再试试吧!现在只能自己在窗体上直接画