Unity程序设置顶层窗口

using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Diagnostics;
using UnityEngine;
public class WindowMod: MonoBehaviour
{
public Rect screenPosition;
[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 ();
// not used rigth now
//const uint SWP_NOMOVE = 0x2;
//const uint SWP_NOSIZE = 1;
//const uint SWP_NOZORDER = 0x4;
//const uint SWP_HIDEWINDOW = 0x0080;
const uint SWP_SHOWWINDOW = 0x0040;
const int GWL_STYLE = -16;
const int WS_BORDER = 1;
void Start ()
{
 
     /*  screenPosition.x = (int)((Screen.currentResolution.width - screenPosition.width) / 2);
        screenPosition.y = (int)((Screen.currentResolution.height - screenPosition.height) / 2);
        if(Screen.currentResolution.height<=768){
            screenPosition.y = 0;
        }*/
SetWindowLong(GetForegroundWindow (), GWL_STYLE, WS_BORDER);
bool result = SetWindowPos (GetForegroundWindow (), -1,(int)screenPosition.x,(int)screenPosition.y, (int)screenPosition.width,(int) screenPosition.height, SWP_SHOWWINDOW);
}
}
 

 

 

Unity设置Windows窗口标题颜色需要使用Windows API来实现。以下是一种实现方法: 1. 在Unity中创建一个C#脚本,并在脚本中添加以下代码: ```csharp using System; using System.Runtime.InteropServices; public class WindowColorManager { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll")] public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); [DllImport("user32.dll")] public static extern bool SetSysColors(int cElements, int[] lpaElements, uint[] lpaRgbValues); public static void SetWindowColor(Color color) { int[] elements = { 1 }; // 1 represents the COLOR_ACTIVECAPTION element uint[] rgbValues = { ((uint)color.b << 16) | ((uint)color.g << 8) | (uint)color.r }; SetSysColors(elements.Length, elements, rgbValues); } } ``` 2. 在需要设置窗口标题颜色的地方,调用`SetWindowColor`方法并传入所需的颜色。例如,在点击按钮时设置窗口标题颜色为红色: ```csharp using UnityEngine; using UnityEngine.UI; public class ButtonClickHandler : MonoBehaviour { public Button button; public Color windowColor; void Start() { button.onClick.AddListener(SetWindowTitleColor); } void SetWindowTitleColor() { WindowColorManager.SetWindowColor(windowColor); } } ``` 请注意,此方法仅适用于Windows平台,并且需要使用DllImport来调用Windows API。另外,修改窗口标题颜色会影响整个窗口系统,而不仅仅是Unity应用程序窗口标题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值