U3D 去边框Screen.SetResolution 和自己调用window API问题

1:先说Screen.SetResolution问题。

 这个所谓的调整并不是窗口大小而是视口大小,也就是摄像机的视口大小!尼玛被这个坑惨了。

想要真的实现全屏就要用到window API得到窗口然后修改这个是最稳当的。

2:window API

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();//得到窗口句柄


	const uint SWP_SHOWWINDOW = 0x0040;
	const int GWL_STYLE = -16;
	const int WS_BORDER = 1;
	const int WS_POPUP = 0x800000;
再C#使用中使用API很简单,向上面定义出来使用就行

IntPtr handle = GetForegroundWindow();//得到句柄过后
SetWindowLong(handle, GWL_STYLE, WS_POPUP);//主要设置风格
bool result = SetWindowPos(handle, 0, x, y, w, h, SWP_SHOWWINDOW);//设置窗口大小以及位置
就这么简单的就可以完成全屏,但是。这个获取的句柄是活跃状态的句柄。这个就会出现一个很坑的问题。如果你再启动程序之后

激活的是其他的窗口,本身窗口非激活的话,激活状态窗口会被修改。。

解决办法就是获取窗口的时候换个方法。。这个方法自行百度挺多的,就是通过 窗口名字获取句柄,然后其他的就像上面的一样就OK




  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值