精华内容
下载资源
问答
  • 可否让玩家点击窗口的关闭按钮的时候不关闭程序,而是执行最小化。 说实话,这样做不是很厚道,不过,技术上是可以实现的。 二、创建脚本 创建一个WindowsStyle脚本,挂到场景的某个物体上,比如我挂到Main Camera...

    一、前言

    游戏项目是使用Unity开发的,发布了PC平台的exe
    然后策划提出这么一个需求:

    可否让玩家点击窗口的关闭按钮的时候不关闭程序,而是执行最小化。
    

    说实话,这样做不是很厚道,不过,技术上是可以实现的。
    本文实现的效果如下:
    在这里插入图片描述

    二、创建脚本

    创建一个WindowsStyle脚本,挂到场景的某个物体上,比如我挂到Main Camera上。
    在这里插入图片描述

    三、代码

    using System;
    using System.Runtime.InteropServices;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class WindowsStyle : MonoBehaviour
    {
        public Button hideBarBtn;
        public Button showBarBtn;
        public Button hideCloseBtn;
        public Button showCloseBtn;
    
    
        private void Awake()
        {
            // 获得窗口句柄
            var hwd = GetForegroundWindow();
            // 隐藏标题栏
            hideBarBtn.onClick.AddListener(() =>
            {
                var wl = GetWindowLong(hwd, GWL_STYLE);
                wl &= ~WS_CAPTION;
                SetWindowLong(hwd, GWL_STYLE, wl);
            });
            // 显示标题栏
            showBarBtn.onClick.AddListener(() =>
            {
                var wl = GetWindowLong(hwd, GWL_STYLE);
                wl |= WS_CAPTION;
                SetWindowLong(hwd, GWL_STYLE, wl);
            });
            // 隐藏关闭按钮
            hideCloseBtn.onClick.AddListener(() =>
            {
                var wl = GetWindowLong(hwd, GWL_STYLE);
                wl &= ~WS_SYSMENU;
                SetWindowLong(hwd, GWL_STYLE, wl);
            });
            // 显示关闭按钮
            showCloseBtn.onClick.AddListener(() =>
            {
                var wl = GetWindowLong(hwd, GWL_STYLE);
                wl |= WS_SYSMENU;
                SetWindowLong(hwd, GWL_STYLE, wl);
            });
        }
    
    
    
        /// <summary>
        /// 点击窗口的x按钮,会执行这个函数
        /// </summary>
        private void OnApplicationQuit()
        {
            Application.wantsToQuit += () =>
            {
                // 获得窗口句柄
                var hwd = GetForegroundWindow();
                // 设置窗口最小化
                ShowWindow(hwd, SW_SHOWMINIMIZED);
                // 阻止程序被关闭
                return false;
            };
        }
    
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();
    
        [DllImport("user32.dll")]
        public static extern bool ShowWindow(IntPtr hwd, int cmdShow);
    
        [DllImport("user32.dll")]
        public static extern long GetWindowLong(IntPtr hwd, int nIndex);
    
        [DllImport("user32.dll")]
        public static extern void SetWindowLong(IntPtr hwd, int nIndex, long dwNewLong);
    
        /// <summary>
        /// 最小化
        /// </summary>
        const int SW_SHOWMINIMIZED = 2;
    
        /// <summary>
        /// 最大化
        /// </summary>
        const int SW_SHOWMAXIMIZED = 3;
    
        /// <summary>
        /// 还原
        /// </summary>
        const int SW_SHOWRESTORE = 1;
    
        /// <summary>
        /// 窗口风格
        /// </summary>
        const int GWL_STYLE = -16;
        /// <summary>
        /// 标题栏
        /// </summary>
        const int WS_CAPTION = 0x00c00000;
        /// <summary>
        /// 标题栏按钮
        /// </summary>
        const int WS_SYSMENU = 0x00080000;
    }
    

    四、赋值脚本的按钮成员

    使用UGUI创建四个按钮,赋值给脚本的按钮成员对象。
    在这里插入图片描述

    五、打包运行测试

    发布PC平台的exe
    在这里插入图片描述
    发布成功后,运行测试效果如下:
    在这里插入图片描述

    展开全文
  • (2)放置2个按钮,一个用来隐藏标题栏,一个用来显示标题栏。 (3)在隐藏标题栏按钮事件函数中,添加代码如下: void CShowOrHideTitleBarTestDlg::OnBnClickedButton1() //隐藏标题栏 { // TODO: 在此添加控件...

    (1)新建一个基于对话框的MFC应用程序ShowOrHideTitleBarTest,删除对话框中原有控件。
    (2)放置2个按钮,一个用来隐藏标题栏,一个用来显示标题栏。
    (3)在隐藏标题栏按钮事件函数中,添加代码如下:

    void CShowOrHideTitleBarTestDlg::OnBnClickedButton1() //隐藏标题栏
    {
    	// TODO: 在此添加控件通知处理程序代码
    	ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED);
    }
    

    (4)在显示标题栏按钮事件函数中,添加代码如下:

    void CShowOrHideTitleBarTestDlg::OnBnClickedButton2()  //显示标题栏
    {
    	// TODO: 在此添加控件通知处理程序代码
    	ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED);
    }
    

    (5)保存并运行工程,运行结果如图所示:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 下面解决标题栏隐藏功能 找到函数:   GLView::initWithRect(const std::string&amp; viewName, Rect rect, float frameZoomFactor) 函数里面有:   glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//...

    同上:cocos3.2最近在开发,windows时遇到好多问题

    下面解决标题栏隐藏功能

    找到函数:

     

    GLView::initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor)

    函数里面有:

     

    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//不可改变大小 

    在下面添加个函数

    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    glfwWindowHint(GLFW_DECORATED, GL_FALSE);   //没有边框和标题栏  

     

    ok:完成

     

    glfwSetWindowShouldClose(_mainWindow, 0);可以设置cocos是否关闭:1为关闭,0为不关闭

     

    获取更多帮主请关注小程序

     

    展开全文
  • 写这篇博客的目的,就是防止忘记找不到。 实际项目中使用,测试有效。 调用: IntPtr CurrentAppHandle = GetForegroundWindow();...HandleRef ...// 初始化窗口风格 IntPtr Style = GetWindowLongPtr(C...

    写这篇博客的目的,就是防止忘记找不到。

    实际项目中使用,测试有效。

    调用

    IntPtr CurrentAppHandle = GetForegroundWindow();
    HandleRef ParentHandle = new HandleRef(this, CurrentAppHandle);
    
    // 初始化窗口风格
    IntPtr Style = GetWindowLongPtr(CurrentAppHandle, GWL_STYLE);
    uint tempStyle = (uint)Style.ToInt32() & ~WS_CAPTION & ~WS_SYSMENU & ~WS_SIZEBOX;
    WinAPI.SetWindowLongPtr(ParentHandle, GWL_STYLE, new IntPtr(tempStyle));

    WindowsAPI

        /// <summary>
        /// 检索有关指定窗口的信息。该函数还将以指定的偏移量将值检索到额外的窗口内存中。
        /// </summary>
        /// <param name="hWnd"></param>
        /// <param name="nIndex"></param>
        /// <returns></returns>
        public static IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex)
        {
            if (IntPtr.Size == 8)
                return GetWindowLongPtr64(hWnd, nIndex);
            else
                return GetWindowLongPtr32(hWnd, nIndex);
        }
        [DllImport("user32.dll", EntryPoint = "GetWindowLong")]
        private static extern IntPtr GetWindowLongPtr32(IntPtr hWnd, int nIndex);
    
        [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")]
        private static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, int nIndex);
    
        /// <summary>
        /// 这种静态方法是必需的,因为早期操作系统不支持
        /// </summary>
        /// <param name="hWnd"></param>
        /// <param name="nIndex"></param>
        /// <param name="dwNewLong"></param>
        /// <returns></returns>
        public static IntPtr SetWindowLongPtr(HandleRef hWnd, int nIndex, IntPtr dwNewLong)
        {
            if (IntPtr.Size == 8)
                return SetWindowLongPtr64(hWnd, nIndex, dwNewLong);
            else
                return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32()));
        }
    
        [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
        private static extern int SetWindowLong32(HandleRef hWnd, int nIndex, int dwNewLong);
    
        [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")]
        private static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, IntPtr dwNewLong);
    
        /// <summary>
        /// 获取置顶窗口
        /// </summary>
        /// <returns></returns>
    
        [DllImport("user32", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern IntPtr GetForegroundWindow();

     

     

    参数

        /// <summary>
        /// 设置一个新的窗口样式
        /// </summary>
        public const int GWL_STYLE = -16;
    
        /// <summary>
        /// 标题
        /// </summary>
        public const uint WS_CAPTION = 0x00C00000;     /* WS_BORDER | WS_DLGFRAME  */
    
        /// <summary>
        /// 系统菜单
        /// </summary>
        public const uint WS_SYSMENU = 0x00080000;
    
    
        /// <summary>
        /// 设置调整窗口大小的厚的结构的窗口。
        /// </summary>
        public const uint WS_THICKFRAME = 0x00040000;
    
        /// <summary>
        /// 创建一个可调边框的窗口,与 WS_THICKFRAME 风格相同
        /// </summary>
        public const uint WS_SIZEBOX = WS_THICKFRAME;

     

    展开全文
  • Windows API去掉窗口标题栏以及边框

    万次阅读 2014-04-26 00:35:57
    本文中代码由http://bbs.csdn.net/topics/370099236中的VB代码修改而来。
  • 自定义 Qt 窗口标题栏

    千次阅读 2012-12-12 11:13:21
    系统提供的窗口标题栏显然太千篇一律,无法满足我们的需求。但是,标题栏是由操作系统提供的,而操作系统没有提供任何方便修改标题栏的 API。首先想到的是,我们隐藏掉系统标题栏,然后绘制自己的进行替代。但是...
  • 1. pb里实现无标题栏 api解决: SetWindowLong(Handle, // 当前窗体句柄  GWL_STYLE, // 表示当前是要设置新的窗体(普通)样式  // 得到指定窗体信息  GetWindowLong(Hand
  • qt 中隐藏namedwindow的标题栏

    千次阅读 2018-07-17 15:53:14
    做个展会的demo,播放视频,用opencv进行视频的播放。...1、你全屏namedwindow窗口,opencv自己做处理不显示窗口标题栏。 namedWindow("input", CV_WINDOW_NORMAL| CV_GUI_NORMAL | CV_WINDOW_F...
  • 最终要达到的效果一: 效果二: 标题栏 &...隐藏标题栏 显示状态栏 隐藏标签栏 最终效果: 快捷键 含义 Tab 自动路径补全 Ctrl+T 建立新页签 Ct...
  • using System.Runtime.InteropServices; //control the task bar hide or show //liuyanlei public class ToolControlTaskBar ...)] //这里是引入 user32.dll 库, 这个库是windows系统自带的。 pub...
  • COCOS2D是移动端开发游戏的免费引擎,功能非常强大,由于在移动端没有标题栏不存在问题,在windows下会有默认的标题栏,如果做得游戏为了在windows下也有统一的游戏风格,修改标题栏就必不可少。 1.隐藏标题栏 ...
  • Qt 怎么设置隐藏标题栏 Qt 怎么设置隐藏标题栏 Qt 怎么设置隐藏标题栏 Qt 怎么设置隐藏标题栏
  • QT隐藏标题栏和背景

    2020-11-24 13:37:11
    如下图,加载日志的时候显示一个加载进度,这个时候需要隐藏背景,和标题框,可以使用一下两句代码 ...//隐藏标题栏,去除任务栏 setAttribute(Qt::WA_TranslucentBackground);//镂空背景 ...
  • <Window x:Class="CasePanel.Views.ModiftcaseWindowView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ...
  • 隐藏和显示标题栏

    千次阅读 2015-03-12 16:06:17
    在设计窗体时,有时需要动态的显示或者隐藏窗体标题栏,可以通过API函数GetWindowLong、SetWindowLong和SetWindowPos来实现。 GetWindowLong函数能够获得指定窗口的信息,其语法结构为: LONG WINAPI ...
  • C#如何隐藏窗体的标题栏

    千次阅读 2019-06-12 22:46:44
    如何隐藏窗体的标题栏,使得窗体只剩下一个客户区域呢?(下图所示,左图为隐藏标题栏之前,右图为隐藏标题栏之后) 实现方法很简单,第一种方法是通过代码实现的。 方法一、代码法 using System; using ...
  • 然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将使用 WindowChrome 来自定义窗口样式,使其既...
  • C++Win32窗口取消标题栏

    千次阅读 2019-05-28 23:59:26
    在CreateWindow语句后加上这段代码 SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_CAPTION); 快去试下吧!
  • C#重绘windows窗体标题栏和边框

    万次阅读 热门讨论 2012-12-06 12:02:18
    windows桌面应用程序都有标准的标题栏和边框,大部分程序也默认使用这些样式,一些对视觉效果要求较高的程序,如QQ, MSN,迅雷等聊天工具的样式则与传统的windows程序大不相同,其中迅雷还将他们的BOLT界面引擎开放...
  • 菜单栏就是窗口最上方,标题栏下方的那部分,通常 有“文件,编辑,查看,工具,帮助”等选项。   工具栏一般在菜单栏下方,通常有“前进,后退”等 按钮。     回答 2 、   最上面的是标题栏,下面就是菜单栏,...
  • qt中如何去掉主窗口标题栏

    千次阅读 2011-09-22 09:27:46
    有这样一个程序: #include #include #include #include ... dialog.setStyleSheet(QString::fromUtf8("background-image: url(:/images/1.PNG);...2、该处是去掉窗口标题栏的语句
  • mfc窗口去掉标题栏及边框

    千次阅读 2013-06-26 10:16:54
    系统:window xp sp3 编译器:visual studio 2010 ...//去除标题栏及其他样式 SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPED);//去除边框及其他样式 SetWindowLong(m_hWnd,GWL_EXSTYLE,WS_EX_LTRREADIN
  • 通过API函数穷举得到可视窗口的句柄,通过句柄获得对应窗口标题并显示在list中,在list中钩选相应项,则可隐藏窗口和窗口在任的图标.去掉对就项的钩则可使其恢复.程序主窗口也能隐藏,并且可通过热键ALT+F7将其唤出.并...
  • using System.Runtime.InteropServices; //control the task bar hide or show //liuyanlei public class ... [DllImport("user32.dll")] //这里是引入 user32.dll 库, 这个库是windows系统自带的。 publ...
  •  Javascript only provides limited options/settings for "popup windows" and modifying or setting the title is not one of them. By the way, that practice is usually appreciated by web users so they ...
  • 隐藏标题栏的方法其实非常简单,打开MainActivity,在onCreate()方法中添加如下代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window....
  • 我们通过gtk_window_new新建一个GtkWindow后,一般情况下(不经过我们的特殊处理),当把这个窗口显示出来时,就会在任务中显示窗口的图标。但是有些时候我们不想要这个图标,比如,菜单窗口,是不应该有这个图标...
  • 最近发现原来SI可以显示全路径。。。  Options -> Preferences -> Display -> Trim long path names with ellipsis
  • C语言 关闭按钮无效化 隐藏标题栏

    千次阅读 2018-06-08 09:58:09
    windows.h&gt; #include &lt;stdio.h&gt; int main() { DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); DrawMenuBar(GetConsoleWindow()); //EnableMe...
  • window.open打开窗口时要使窗口去掉菜单栏、工具栏、标题栏,达到窗口最大化,可以采用下面的方法: js 代码 ///window.open(document.location, '窗体名称', 'fullscreen');//这句打开并去掉所有栏, //连系统任务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,277
精华内容 8,910
关键字:

windows窗口标题栏隐藏