将窗口的formstyle属性设置为fsAlwaysontop,无法将窗口置顶
用setwindowpaos api也不行有谁遇到过这种情况?

解决方案 »

  1.   

    你建个新程序, 设formstyle 为 fsAlwaysontop试试
      

  2.   

    重写CreateParams怎样?procedure CreateParams(var params: TCreateParams); override;procedure TForm1.CreateParams(var params: TCreateParams);
    begin
      inherited;
      params.ExStyle:=  params.ExStyle or WS_EX_TOPMOST;
    end;
      

  3.   

    如果是在游戏开启的全屏下可能不行。
    function BringWindowToTopEx(hWnd: HWND): Boolean;
    begin
      if IsIconic(hWnd) then //最小化
        ShowWindow(hWnd, SW_RESTORE);
      if GetForegroundWindow <> hWnd then
        SetForegroundWindow(hWnd);//enabled
        //BringWindowToTop(hWnd);//not enabled
        //ForceForegroundWindow(hWnd);//enabled
        {SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
        SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//enabled}
        //SwitchToThisWindow(hWnd, True);//enabled
      Result := GetForegroundWindow = hWnd;
    end;function BringWindowToTopMost(hWnd: HWND; bTopMost: Boolean): Boolean;
    begin
      if IsIconic(hWnd) then //最小化
        ShowWindow(hWnd, SW_RESTORE);
      if bTopMost then
        SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE)
      else
        SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
    end;function BringWindowToTopXY(hWnd: HWND; X, Y: Integer;
      hWndInsertAfter: HWND): Boolean;
    begin
      Result := BringWindowToTopEx(hWnd);
      Result := SetWindowPos(hWnd, hWndInsertAfter, X, Y, 0, 0, SWP_NOSIZE)
        and Result;
    end;