精华内容
下载资源
问答
  • 先引用别人的一张图来说明什么是标题栏,菜单栏. (图的出处:http://www.cppblog.com/guogangj/archive/2010/08/03/122035.aspx)图的作者说他的方法可以比较好的实现全屏.但是我在6.0模拟器上无法隐藏菜单栏.其他的...

    先引用别人的一张图来说明什么是标题栏,菜单栏.

    (图的出处:http://www.cppblog.com/guogangj/archive/2010/08/03/122035.aspx)图的作者说他的方法可以比较好的实现全屏.但是我在6.0模拟器上无法隐藏菜单栏.其他的Task Bar,Start Icon,SIP Button都可以用API实现

    //隐藏
    //SIP BUTTON
    SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON); 
    //Task Bar
    SHFullScreen(m_hWnd, SHFS_HIDETASKBAR); 
    //Start Icon
    SHFullScreen(m_hWnd, SHFS_HIDESTARTICON);
    //显示
    //SIP BUTTON
    SHFullScreen(m_hWnd, SHFS_SHOWSIPBUTTON); 
    //Task Bar
    SHFullScreen(m_hWnd, SHFS_SHOWTASKBAR); 
    //Start Icon
    SHFullScreen(m_hWnd, SHFS_SHOWSTARTICON);

    可能原因是我使用的MFC创建的dialog.相信如果使用win32创建dialog的话可以不创建菜单栏.那自然就不存在不可隐藏的问题了.

    经过我baidu,google之后找到一个比较靠谱的方法.之所以说比较靠谱是因为网上大部分方法都是用FindWindows,之后再showwindow(hwnd,SW_HIDE);这种比较"冒险"的方式

    如下

            CWnd* pWndSIP = FindWindow( _T("menu_worker"), 0 ); 
            if ( pWndSIP ) 
            { 
                    pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE); 
                    pWndSIP->ShowWindow(SW_HIDE); 
            }
            pWndSIP = FindWindow( _T("MS_SIPBUTTON"), 0 ); 
            if ( pWndSIP ) 
            { 
                    pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE); 
                    pWndSIP->ShowWindow(SW_HIDE); 
            }
            pWndSIP = FindWindow( _T("HHTaskBar"), 0 ); 
            if ( pWndSIP ) 
            { 
                    pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE); 
                    pWndSIP->ShowWindow(SW_HIDE); 
            }
    

    上面方法在程序非法退出之后,导致Task Bar等不能正常显示.谁都不能保证自己程序永远不异常.

    再说说靠谱的方法.

    (参考网址:http://blog.csdn.net/tozheng/archive/2010/03/02/5338540.aspx)注意看第二点.

    作者使用了一个两个API,

    //m_hwnd指dialog的HWND
    HWND hMenu=SHFindMenuBar(m_hwnd);
    if(NULL!=hMenu)
    {
              ShowWindow(hMenu, SW_HIDE)
    }
    

    同时作者也指出

    并没有彻底隐藏菜单栏,而是隐藏了你自己的菜单,也就是说如果你执行ShowWindow(SHFindMenuBar(hwnd), SW_HIDE)一次后,会看到屏幕仍旧有一个空的菜单栏,只是原先有字的菜单不见了。 这是为什么呢? 
    事实上,原因是,一个窗口在没有建立用户自定义菜单时,已经有了一个默认菜单 
    ShowWindow(SHFindMenuBar(hwnd), SW_HIDE)之后 你再去SHFindMenuBar(hwnd),又会得到一个句柄,你得再把它隐藏掉。当然,如果你没有构造自定义菜单,那只有一个默认菜单。
    

    最后给出我的代码

    //这种方式不管你有没有自己创建菜单,都可以比较好实现隐藏
    void CBaseDlg::ShowMenuBar(BOOL bShow)
    {
    	if (TRUE==bShow)
    	{
    		if(NULL!=m_hMenu1)
    		{//显示自己创建的或MFC创建的
    			::ShowWindow(m_hMenu1, SW_SHOWNORMAL);
    		}
    		if(NULL!=m_hMenu2)
    		{//注意这里不再需要,否则如果你自己创建了菜单.那么会交替显示/不显示菜单.表达不清了.自己试验下
    			//::ShowWindow(m_hMenu2, SW_SHOWNORMAL);
    		}
    	}
    	else
    	{
    		m_hMenu1=SHFindMenuBar(m_hWnd);
    
    		if(NULL!=m_hMenu1)
    		{//隐藏自己穿件的菜单
    			::ShowWindow(m_hMenu1, SW_HIDE);
    		}
    		m_hMenu2=SHFindMenuBar(m_hWnd);
                   
    		if(NULL!=m_hMenu2)//如果自己没有创建菜单这里获取的将会是NULL
    		{
    			::ShowWindow(m_hMenu2, SW_HIDE);
    		}
    	}
    }
    

    最好自己动手试验下.

    转载于:https://www.cnblogs.com/zlty/archive/2010/12/10/1902202.html

    展开全文
  • 这个问题并不鲜见,google一下会发现无数类似问题,说什么的都有,有说是病毒的,有说是设置问题,有说bug的,网上目前提到的解决方案通常都重新应用一下桌面样式,属于治标不治本,下面列出一个超级无敌霹雳最牛...

    这个问题并不鲜见,google一下会发现无数类似问题,说什么的都有,有说是病毒的,有说是设置问题,有说bug的,网上目前提到的解决方案通常都是重新应用一下桌面样式,属于治标不治本,下面列出一个超级无敌霹雳最牛的解决方案:

    Internet选项->高级->浏览->"对网页上的按钮和控件启用视觉样式"
    把前面的勾去掉,确定即可,再看看,是不是windows标题栏终于不再变小啦;)

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-22305/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/7607759/viewspace-22305/

    展开全文
  • 在老妹家看到她电脑的任务管理器居然是这个样子的,我擦,这是什么情况,没有标题栏,没有菜单栏,没有那些选项卡。 百度了下,解决办法是在红色的区域双击一下,无语了。 

    在老妹家看到她电脑的任务管理器居然是这个样子的,我擦,这是什么情况,没有标题栏,没有菜单栏,没有那些选项卡。

     

    百度了下,解决办法是在红色的区域双击一下,无语了。

     

    展开全文
  • Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要什么坑。直到一些新控件的引入和一些外观设计趋势变化之后,扩展标题栏开始出现一些坑了。 本文将重温 UWP 自定义标题栏或者扩展标题栏的...

    在 Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要是没什么坑。直到一些新控件的引入和一些外观设计趋势变化之后,扩展标题栏开始出现一些坑了。

    本文将重温 UWP 自定义标题栏或者扩展标题栏的方法,但更重要的是解决一些坑。


    扩展/自定义标题栏

    要扩展标题栏,只需要拿到 CoreApplicationView 的实例,然后设置 TitleBarExtendViewIntoTitleBar 属性为 true 即可。

    var applicationView = CoreApplication.GetCurrentView();
    applicationView.TitleBar.ExtendViewIntoTitleBar = true;
    

    要自定义标题栏,只需要拿到 ApplicationView 的实例,然后设置 TitleBar 里各种属性接口。

    var titleBar = ApplicationView.GetForCurrentView().TitleBar;
    titleBar.BackgroundColor = Colors.Khaki;
    titleBar.ButtonBackgroundColor = Colors.Transparent;
    

    一些概念

    那么问题来了,为什么前者需要拿到 CoreApplicationView 的实例,后者需要拿到 ApplicationView 的实例?它们到底是什么区别?

    我在 CoreApplication/Application、CoreWindow/Window 之间的区别 一文中提到过 CoreApplicationCoreWindowCoreDispatcher 之间的关系。继续借用那篇文章中的图:

    UWP 创建应用视图

    其中,Window 是对 CoreWindow 的封装,提供了更多与 XAML 相关的功能。这里的 ApplicationView 也是这样,是对 CoreApplication 的封装,提供了 XAML 相关的功能。

    那篇文章中详细描述了这几个概念之间的关系和区别。考虑到阅读的一致性,我摘抄过来:

    具体来说,CoreWindow 是与操作系统、与整个应用打交道的类型,提供了诸如窗口的尺寸、位置、输入状态等设置或调用;Window 是与应用内 UI 打交道的类型,比如可以设置窗口内显示的 UI,设置内部哪个控件属于标题栏,获取此窗口内的 Compositor。与之对应的,CoreApplicationView 是应用与操作系统交互,与窗口消息循环机制协同工作的类型,包含窗口客户区和非客户区设置;ApplicationView 也是与应用内 UI 打交道的类型,它可以使用 XAML 相关的类型对应用程序视图进行更方便的设置。

    总结起来,CoreWindowCoreApplicationView 提供更加核心的操作系统或应用底层功能,而 WindowApplicationView 对前者进行了封装,使得我们能够使用 Windows.UI.Xaml 命名空间下的类型对窗口和应用视图进行控制。

    于是,我们便能够理解为什么扩展标题栏和设置标题栏颜色会使用到两个不一样的类型了。

    ExtendViewIntoTitleBar 是改变了窗口的客户区(Client Area)和非客户区(Non-client Area)组成,这是传统 Win32 编程中的概念,是更接近操作系统底层的概念。BackgroundColorButtonBackgroundColor 这里需要用到 Windows.UI.Xaml 命名空间中的颜色,而 CoreApplicationView 太底层,无法使用 XAML 颜色。

    一些坑

    控件在标题栏区域无法交互

    想必当你扩展到标题栏后,在标题栏区域增加一些按钮的时候,肯定会遇到下面的情况:

    在这里插入图片描述
    ▲ 按钮在标题栏区域的一半无法交互

    这显然是无法接受的。

    然而,当我们将一个 XAML 控件指定为标题栏之后,就只会是那个控件所在的区域响应标题栏操作,其他地方就会恢复正常。

    // TitleBar 是我在 XAML 中写的一个 x:Name="TitleBar" 的控件。
    Window.Current.SetTitleBar(TitleBar);
    

    在这里插入图片描述
    ▲ 按钮在标题栏区域现在可以交互了

    特别说明一下,SetTitleBar 传入的是 UIElement 类型的实例,也就是说这也是 XAML 交互的一部分。我们需要使用 Window 的实例,而不是 CoreWindow 的实例。

    更高的标题栏,或者被遮挡

    如果被指定为标题栏的控件更大,超出标题栏区域了,它还会成为标题栏吗?如果被其他控件遮挡了,它还会响应标题栏事件吗?

    实际看来,无论它多大,都能响应标题栏事件;但被遮挡的部分就真的被遮挡了,没有标题栏响应。

    在这里插入图片描述
    ▲ 更高的标题栏,或者被遮挡

    事实上,指定为标题栏的控件可以在界面的任何地方,不需要一定在顶部。只不过,绝大多数不作死的应用都不会这样设置吧!

    在什么时机调用?

    扩展标题栏用的是 CoreApplicationView,自定义标题栏颜色用的是 ApplicationView,将控件指定为标题栏用的是 Window。如果我们的应用只有一个视图,其实我们随便找一个初始化的地方调用就好了。但如果我们的应用有多个视图,那么给非主要视图调用的时候就需要在其初始化之后了。阅读 理解 UWP 视图的概念,让 UWP 应用显示多个窗口(多视图) 了解如何编写多个视图的 UWP 应用,了解非主要视图的初始化时机。

    当然,如果你比较极客,从 Main 函数开始写 UWP 应用,就像我在 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 一文中做的一样,那么你也需要等到初始化完毕之后才能调用(至少是 SetWindow 之后了)。

    适配移动设备

    移动设备上并不是标题栏,而是状态了和虚拟按键。关于扩展视图到这些区域,可以阅读 win10 uwp 标题栏 - 林德熙


    参考资料


    我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

    如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • 什么要隐藏老实说,它占的区域还是不小的,而且,还会让人在使用过程中分心……此文分享两种方式:1. 自动隐藏2. 手动隐藏/显示自动隐藏:顾名思义,无需手动点击,无需添加自启动,缺点需要更改用户名为你的...
  • 本文作者: 峡州仙士 原文链接: ...声明: ...windows10 cmd命令提示符/批处理/终端 快速编辑模式bug 程序运行被阻塞 顶部标题栏提示选择 需要回车才能继续执行 为什么出现这种情况? 这快速
  • 但是什么是应用标题栏?比如Groove音乐的应用标题栏就是下面这样:   什么,你说看不清楚。因为它白色的,微软设计的,这锅我不背。 你不喜欢怎么办?改呗! Windows10 API提供解决方案,可以更改应用标题栏的...
  • 什么要用H5实现标题栏 交互上拓展了用户的操作区域 减少了H5和Native的交互,使H5功能更独立,耦合性更低 举例 注: 蓝色区域为H5,红色区域为Native 实现原理 通过H5移动Native窗口的本质子窗口移动父窗口 要...
  • 不管什么时候,只要 Windows 想知道窗口客户区的大小,它便会发送这个消息。 NCCALCSIZE_PARAMS 结构保存三个矩形数组,记住结构lpncsp->rgrc[0] 这客户区的坐标 if (bCalcValidRects) //为真这个结构才...
  • 你可能会问:“为什么会有人想这样做呢?”这个绘制需求通常用于浮动式工具栏。...这就像在说:”如果Windows希望我绘制一个非活动状态的标题栏,则我会反过来将标题栏绘制为活动式的。 WM_NCACTIVAT
  • What Is a Window?? 显然地,windows是Windows的核心。windows如此重要,以至于操作系统以它们命名。但什么是window?...它通常有一个带有标题栏(title bar)、最小化和最大化按钮(button)...
  • 窗口的标题栏由系统窗口管理器而不是Swing管理.您没有说您正在使用什么OS / GUI.对于Windows XP,打开显示控制面板,选择“外观”选项卡,然后单击“高级”按钮.您可以在此处更改标题字体(尽管系统上安装的字体可能没有...
  • Windows桌面应用开发-什么是窗口

    千次阅读 2013-04-20 12:34:31
    MSDN在线原文(英文) ...这种类型的窗口被称为应用程序窗口或主窗口,它通常一个带有标题栏,最小化和最大化按钮和其它标准UI元素的框架。这个框架被称为窗口的非客户区,这么说是因为窗口的这部分
  • 在窗口标题栏上加按钮 原理一样的,都重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx),可以说本来没有什么新意,可是从写这个程序的过程中,我也学到了两个技巧: 1)、C#中重写窗口过程不用再...
  • 首先,在资源管理器中打开windows文件夹下的system文件夹,(如果wind ows nt或windows 2000用户,则winnt文件夹下的system文件夹)。 新建一个文件名Oeminfo.ini的文件。用记事本编辑该文...
  • WinForm怎么在窗口标题栏上添加按钮?都重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx),可以说本来没有什么新意,可是从写这个程序的过程中,我也学到了两个技巧:  1)、C#中重写窗口过程不用再...
  • 什么是窗口? 显然,Windows是Windows...它通常有一个标题栏框架,最小化和最大化按钮,以及其他标准的UI元素。这个框架被称为窗口的非客户区,所谓的因为操作系统管理窗口的那一部分。框架内的区域客户区。这您的程
  • 转自:http://blog.sina.com.cn/s/blog_711dc8b40100ok9i.html你...那么,创建什么样的窗口呢?创建前,Window系统可不知道你要的是什么类型的窗口啊(比如标题栏上显示什么图标,鼠标形状是什么,窗口背景颜色等等)。
  • Windows窗口程序

    2020-03-09 17:59:25
    什么是窗口 ...标题栏,也就是窗口程序最上方显示标题的地方,一般用于显示应用程序名字。一下图片窗口的组成部分,各个组成部分都有自己的行为特征。大部分窗口都和以下图片类似,但并不是每个...
  • 简析Windows消息机制

    2018-10-30 02:00:19
    窗口程序特征一个Windows上的窗口程序,包含外层的窗口,客户区,菜单栏,标题栏以及按钮,编辑框等!而窗口,控件以及音频,视频,图片等文件统称为资源文件(Resource.h),每个资源文件都对应一个句柄,通过句柄...
  • Windows 窗口 种类

    2010-12-31 14:47:53
    (Desktop Window),这是Windows系统实现的,当应用程序启动时一般会创建一个窗口,它包含标题栏(Title Bar)、菜单(Menu),边框(Border)等等,这个窗口常常被称为主窗口(Main Window)。 当然应用程序还...
  • WindowSourceCode ...requestFeature移除标题栏,为什么要放到setContentView之前才有效? 继承自活动 点进setContentView的源码,可以看到里面调用了window的setContentView方法,然后初始化了windowDecorView的Ac
  • 它通常有一个带有标题栏、最小化和最大化按钮的框架,以及其他标准的UI元素。这个框架被称为窗口的非客户区,之所以这样称呼因为操作系统管理窗口的那部分。框架内的区域客户区域。这你的程序管理的窗口的一...
  • windows 程序设计

    2012-03-07 15:25:21
    一般而言,Windows API自Windows 1.0以来一直保持一致,没什么重大改变。具有Windows 98程序写作经验的Windows程序写作者会对Windows 1.0程序的原始码感觉非常熟悉。API改变的一种方式进行增强。Windows 1.0支持不...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 195
精华内容 78
关键字:

windows标题栏是什么