主窗口:Form_Main
我想在主窗口上浮动一个窗口Form_Mask在Create事件里创建Form_Mask如下:    Form_Mask:=TForm_Mask.Create(Form_Main);
    setwindowpos(Form_Mask.handle,Hwnd_Topmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE  or  SWP_NOSIZE);//窗口置顶
    Form_Mask.Show;但是当我点其它程序的窗口(比如我的电脑)时,Form_Mask还是在上面,结果我的电脑夹在了两个窗口中间!如何才能使Form_Mask一直在Form_Main之上,但我点其它程序时,Form_Main和Form_Mask就都到后面去?

解决方案 »

  1.   

    那就在 Form_Main或 Form_Mask 获取焦点时,设置Form_Mask Hwnd_Topmost,
    在 Form_Main 失去焦点时,取消Form_Mask Hwnd_Topmost...
      

  2.   

    测试了一下,很正常
    Form_Mask只在本程序置顶,打开其它程序时,会盖着它
      

  3.   

    试过了,没解决问题,代码如下:procedure   WMActivate(var   Msg:   TMessage);   message   WM_ACTIVATE;procedure TForm_Main.WMActivate(var Msg: TMessage);
    begin
      inherited;
      case   Msg.wParam   of
        0:  setwindowpos(Form_Mask.handle,Hwnd_NoTopmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE  or  SWP_NOSIZE);//取消置顶 //Form_Mask.FormStyle:=fsNormal;
        else
        begin
            //Form_Mask.FormStyle:=fsStayOnTop;
            setwindowpos(Form_Mask.handle,Hwnd_Topmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE  or  SWP_NOSIZE);//窗口置顶
        end;
      end;
    end;如果是在其它程序的标题栏单击,效果没问题,如果是把其它程序的窗口拖过来,还是会夹在中间!
      

  4.   

    而且出现了新问题,本程序的其它窗口获取焦点后,Form_Mask会跑到Form_Main的下面,Form_Main获取焦点后,Form_Mask重新到了最上面。还是比较郁闷!
      

  5.   

    有个情况忘了说了,我用了GDI+把主窗口Form_Main用png图片重绘过了,不规则透明窗口。这个问题困扰了我很长时间,以前做的时候就出现这个问题,现在又出现,请教各位大侠,帮帮小弟吧。QQ:28360928
    Tel:18601028699