- Home /
Borderless Windows in Standalone Builds
I am developing a launcher for a game and I am trying to work out how to remove the Windows Border on the build, I only need it to work on Windows, so other platforms do not matter. I would prefer to be able to turn this on and off in the launcher options, but need the window to still be draggable around, preferably with the left mouse button and clicking and dragging from anywhere in the window, but I am unsure of that this will do to the buttons.
I am also using transparency in the Unity UI, this is not needed but I would prefer to keep it in the build, so you can see whatever is behind the window though it, but again I am unsure of what this will do to the buttons.
The current solution I am using is with User32.Dll, posted below (with the current method I have to specify when I want the window in pixels, which is not ideal, I would prefer it so that it just starts in the middle of whatever screen resolution).
using System; using System.Collections; using System.Runtime.InteropServices; using System.Diagnostics; using UnityEngine;
public class DragonWindowDriver : MonoBehaviour { public Rect ScreenPosition; public bool IsFullscreen = false;
if UNITY_STANDALONE_WIN && !UNITY_EDITOR
[DllImport("user32.dll")] static extern IntPtr SetWindowLong (IntPtr hwnd, int _nIndex, int dwNewLong);
[DllImport("user32.dll")]
static extern bool SetWindowPos (IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow ();
const uint SWP_SHOWWINDOW = 0x0040;
const int GWL_STYLE = -16;
const int WS_BORDER = 1;
void Start ()
{
if(IsFullscreen)
ScreenPosition = GetFullscreenResolution();
SetWindowLong (GetForegroundWindow (), GWL_STYLE, WS_BORDER);
bool result = SetWindowPos (GetForegroundWindow (), 0, (int)ScreenPosition.x, (int)ScreenPosition.y, (int)ScreenPosition.width, (int)ScreenPosition.height, SWP_SHOWWINDOW);
}
endif
if UNITY_EDITOR
void Update() { if (IsFullscreen) ScreenPosition = GetFullscreenResolution(); } #endif
Rect GetFullscreenResolution()
{
Resolution resolution = Screen.currentResolution;
return new Rect(0f, 0f, (float)resolution.width, (float)resolution.height);
}
}
Your answer
Follow this Question
Related Questions
GUI DragWindow only working for a single window. 0 Answers
Transparency & Depth of Field 0 Answers
Window mode 2 Answers
Dragging and Locking Buttons. 1 Answer
Windows (glass) 4 Answers