精华内容
下载资源
问答
  • 文章目录一、前言二、创建脚本三、代码四、赋值脚本的按钮成员五、打包...创建一个WindowsStyle脚本,挂到场景的某个物体上,比如我挂到Main Camera上。 三、代码 using System; using System.Runtime.InteropServic

    一、前言

    游戏项目是使用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
    在这里插入图片描述
    发布成功后,运行测试效果如下:
    在这里插入图片描述

    展开全文
  • (以在窗口标题栏上显示自定义图标为例)  通过本篇,你将知道如何使用图标资源及实质,并有助于你理解在可视化方式编辑使用图标资源过程的代码实质。  另外,可以触类旁通,明白VC的Window应用程序对...
    本篇想通过手动直接编辑代码的方式(而不是可视化的方式)来操作使用自定义的图标。(以在窗口标题栏上显示自定义图标为例)
    

         通过本篇,你将知道如何使用图标资源及实质,并有助于你理解在可视化方式编辑使用图标资源过程中的代码实质。

         另外,可以触类旁通,明白VC中的Window应用程序对各种类似资源(如光标资源、位图资源、声音资源等)操作的一般机制。

    一 开始我们的思考:程序所要用到的各类图像、声音等资源应放在什么地方为好?

         一个程序可能需要使用各种图像、声音。那么,你认为应把这些东西放在什么地方呢?

         一种很显然的做法:就是让这些图形、图像、声音仍以文件形式(如.bmp .jpg .ico .cur .wav等等扩展名的文件,)保存在磁盘中,不包含在应用程序(.exe)中。当我的.exe程序执行时需要这些文件时再把它们从磁盘中加载到内存里并对它们操作。

         如果你是想写一个看图软件或播放音乐之类的软件,这当然是一种最佳的做法啦。但是,有时候你的程序可能要显示一个代表你程序的图像等等的情况。由于前述的方法中,图形、图像、声音是以独立的文件形式,所以软件的使用者是很容易就改动及删除它们的,唉!我可不希望这样啊!

         那么,还有什么办法呢?

         还有一种可以想到的做法:就是让这些图形、图像、声音等数据在编译时就把它们编译进.exe文件中。

         显然,由于程序要用到的各种图像、声音等的数据已经包含在.exe里面了,这样,软件使用者只要拥有这个.exe文件就可以。同时使用者要想改动程序所用的这些图形、图像、声音也就不是那么容易。

         啊!exe程序文件里居然也能存储各种类型图像、声音!嗯,这可是Windows的一个设计目标:可执行程序里不仅只含有程序代码,还可以存储各种图像、声音等的数据呢!也可能第一次让你有了这个念头!但不管怎么说,程序是可以这样设计的!

         好了,那么又如何创建一个包含有图标资源并使用这个图标的.exe文件呢?

    二 图像、声音资源操作的一般步骤。

    1 显然,你得先创建一个自己想要的图标(提示:这里我以图标为例)

         但具体应如何做呢?

         这个问题好解决也好理解:我们只要用一个能编辑图标的图形图像软件就可以啦。制做完图标后,把它们以.ico文件的形式(.ico 是图标文件的扩展名)保存在磁盘的某个文件夹中。

         当然啦,VC本身也提供了一个图标编辑器。

    2 然后你要给这个图标定义一个字符串ID或者整数ID

         为什么要给它定义一个字符串ID或整数ID呢?

         那是因为这个图标是要被编译链接进可执行程序中(即.exe文件,当然也可能是.dll文件),这样程序就不能通过文件名来访问该图标了。

         所以,我们就得给这个图标定义一个字符串ID或整数ID了,用以代表这个图标。(你可以选择使用字符串ID,也可以使用整数ID。)

         这个定义是写在一个叫资源脚本文件(扩展名为 .rc)里的。

         当然,还要记住把.rc文件加入工程。
    3 使用图标第一步:通过ID号加载图标

         请先想想前面两部做了什么?前面两步产生了一个图标并定义了一个图标ID。这样我们的程序就可以使用这个图标了:程序首先通过以下这个API函数:

         HICON   LoadIcon ( HINSTANCE hInstance,   LPCSTR lpIconName);

         来加载图标。

         暂略第一个参数,先来说一下第二个参数LPCSTR lpIconName。该参数是代表要加载图标的字符串ID。

         加载成功后,返回系统分配给该图标的一个句柄值(类型是HICON)。

         (该函数具体的使用,后面还会有介绍。)

    4 加载后,程序都是通过图标句柄来操作该图标

         有了图标句柄值,就可以通过这个值来操作相应的图标了。(还记得“句柄”这个概念及作用吗?Window系统总是通过句柄来操作已加载到内存的某个对象。)

    5 最后,我们的程序都编好后,只要把资源与程序代码一起编译到.exe文件中

         VC会自动用一个专门的资源编译器会把.rc文件及相关的资源文件(*.ico、*.bmp、*.wav等)编译生成一个扩展名为.res的二进制中间文件。然后再用连接程序与程序代码的二进制中间文件一同连接成可执行程序了。

         这看上去比较复杂。不用害怕啊!其实你只要按原来的方式编译连接就行了。


         到此,最好重新浏览一下上述1~5的步骤,并多加体会这个操作流程。

         现在头脑有了概念没有啊?有,那就开始动手吧!(注意:本篇中我是用手动编辑代码的方式来完成的。)

    三 具体实现范例:本例为图标定义一个字符串ID(注意:不是整数ID)

         任务:在窗口标题栏上显示一个自定义的图标。

         (提醒:务必请先对前一篇所完成工程做一个备份。因为以后我还要从上一篇的工程状态开始新的内容呢!)

    1 首先我们要有一个自定义图标(文件名以myicon.ico为例)

         在我们的工程文件夹(即D:MyApp)下创建一个myResLib文件夹(用以集中存放各种资源文件)。

         然后,你可用一个.ico编辑器创建一个图标文件myicon.ico,把它放在D:MyAppmyResLib文件夹下。

         不过,也可能你并不懂得使用任何一款.ico编辑器,那也没关系,随便找一个.ico(16*16或32*32的)文件(这不应成为问题吧?)。把它复制到D:MyAppmyResLib文件夹下,并改名为myicon.ico。

         好了,现在我们有一个图标文件,请你记住它的路径和名称。

    2    之所以用记事本来创建而不用VC本身来创建,是因为我不希望让VC生成一些无关码,以便于解说和理解。

         另外一点要提醒:如果你的工程里已经包含有一个.rc的资源脚本文件,那么在下面的操作会出现一些不同的情况。但如果从第一篇就按我所述的来操作,本工程是没有.rc文件的。

        操作:

         =>开始->程序->附件->记事本

         =>在记事本中输入如下一行:

         IDI_MYICON     ICON   DISCARDABLE   ” myResLib myicon.ico”

         看,在ICON   DISCARDABLE的左边写上ID名,右边写上图标所在的相对路径字符串。这样也就将myResLibmyicon.ico图标定义ID号为IDI_MYICON,并且这样定义的ID就是字符串ID。(等一下你就会知道如何使用字符串ID了!)

         =>点击“记事本”程序菜单“文件”->另存为->在“保存在”框中选D:   ->双击打开MyApp文件夹->在“保存类型”框中选“所有文件(*.*)->在“文件名”框中输入:myRes.rc->点“保存”(操作完成)

         现在我们已经为myicon.ico定义了一个字符串ID:IDI_MYICON 。接下来,要干什么呢?哦,你要知道,这样方式创建脚本文件是不会自动加到我们的工程中,所以你要记得自己把myRes.rc加到你的工程中。

    3 将myRec.rc加入到工程中。

         =>在工作区(Workspace)视图中选FileView选项卡->在其中右击Source Files -> 单击“添加文件到目录… ->双击“myRes.rc”

         本操作的目的:将资源脚本文件myRes.rc加入到该工程中。下面我们就可以通过代码来访问这个图标了。

    4 要使用图标资源,得先用LoadIcon函数加载图标资源。

         LoadIcon原型:
         HICON   LoadIcon ( HINSTANCE hInstance,   LPCSTR lpIconName);

        参数:

        HINSTANCE hInstance:
    要加载图标是存在那个应用程序里,就代入这个应用程序实例的句柄。

        LPCSTAR lpIconName:是你要加载的图标的字符串ID,就是我们在第3步中定义的。

        返回值:加载成功后会返回一个图标句柄值,其类型是HICON。加载后,我们就可以通过这个句柄值来操作对应图标了。

         下面就是原来在窗口类结构体中设置窗口标题栏图标的代码(应该还记得下面一行代码在哪里吧!):
    wndclass.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE( IDI_APPLICATION ) ) ;

         你先别理上面LoadIcon中的参数使用,现在我们把它改成如下:

        wndclass.hIconSm = LoadIcon(hinstance,” IDI_MYICON”) ;

         其中,hinstance就是本应用程序实例的句柄。”IDI_MYICON”就是我们要加载的图标。

         现在,我们把WinMain主函数里的代码修改如下:

    int APIENTRY WinMain(HINSTANCE hinstance,

                          HINSTANCE hPrevInstance,

                          LPSTR      lpCmdLine,

                          int        nCmdShow)

    {

         //……

              wndclass.hInstance = hinstance;

         wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);

         wndclass.hIcon =NULL; 
    //wndclass.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE( IDI_APPLICATION ) ) ;
    //注释了上句

        wndclass.hIconSm = LoadIcon(hinstance,”IDI_ICON1″) ;     //添加了此句


         wndclass.lpszMenuName =NULL;

         wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);

         wndclass.lpszClassName =WND_CLS_NAME;


         if (!RegisterClassEx(&wndclass))

             return 0;

    //……

    }

    5 最后Build我们的程序

         直接F5就行了。

         看到了没,程序的窗口已经变成我们想要的图标了。

    四 继续上例:将图标资源由使用字符串ID改为使用整数ID

         前面我反复地说到字符串ID和整数ID。你首先要明白,所有资源的ID号可以定义为字符串的,也可以定义为整数型的。我在前例中使用的是一个字符串ID的例子,现在我又要改为使用整数ID。

    1 创建一个名为Resource.h头文件,内容如下:
    #define IDI_MYICON 100              



         将IDI_MYICON 定义为一个整数型符号常量。这个数值应是以1以上一个数值。

         (注意:头文件最后要有一空行,也是是说 #define IDI_MYICON 100 后要按一个回车键。)

    2 修改myRes.rc文件。

    //myRes.rc
    #include “Resource.h”    //包含头文件resource.h

    IDI_MYICON     ICON   DISCARDABLE   ” myResLib myicon.ico”

        

         经过上述两处的添加后,IDI_MYICON就不在是字符串ID了,而是整数ID。因为Resource.h已经将IDI_MYICON定义为一个整数的符号常量。

    3 在WinMain( )函数所在的源文件中添加包含Resources.h头文件,并修改LoadIcon()函数。

    // MyAppMain.cpp :主函数及回调函数


    #include .h>

    #include.h>

    #include “resource.h”    //包含resource.h


    int WINAPI WinMain(HINSTANCE hinstance,

                      HINSTANCE hprevinstance,

                      LPSTR lpcmdline,

                      int ncmdshow)

    {

         //……

    wndclass.hInstance = hinstance;

         wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);

         wndclass.hIcon =NULL; 

    //wndclass.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE( IDI_APPLICATION ) ) ;

    //上句注释了
    wndclass.hIconSm = LoadIcon(hinstance, (LPCTSTR)IDI_ICON1) ; 

       //第二个参数由” IDI_ICON1”字符串改成(LPCTSTR) IDI_ICON1


         wndclass.lpszMenuName =NULL;

         wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);

         wndclass.lpszClassName =WND_CLS_NAME;


    }

        分析:

         凡是要使用整数ID资源的文件都要包含Resource.h 头文件,这是因为整数ID是由Resource.h定义的。(这个好理解!)

         修改LoadIcon()调用。因为LoadIcon的第二个参数接受的是字符串ID(就是LPCTSTR指针),所以,我们得把整数ID转化成LPCTSTR。(LPCTSTR) IDI_MYICON目的就是将IDI_MYICON强制转化成LPCTSTR。

         我们可是辛辛苦苦地把字符串ID改成整数ID,现在调用LoadIcon()时又要将IDI_MYICON 强制类型转化成LPCTSTR类型。嘻嘻,真有意思,好似我们在瞎折腾似的,到头来又要回到了原来的状态。但不管怎么说,这也是一种方式噢!

         好了,现在你可以编译运行试试了。哈哈,也是相同的作用哟!
    展开全文
  • Windows中关闭窗口的几种快捷方法 ...在窗口标题栏最左侧为窗口程序图标位置,把鼠标放在此区域双击也可以关闭当前窗口。 方法四:右击窗口标题栏。在窗口的标题栏上右击,在弹出的右键菜单选择

    Win + Ctrl + D 创建虚拟桌面
    Win + Ctrl + F4 关闭当前虚拟桌面
    Win + Ctrl + ←向左切换虚拟桌面
    Win + Ctrl + → 向右切换虚拟桌面
    ALT+Esc 可以使当前窗口最小化。

    Windows 徽标键 + D  显示和隐藏桌面
    Windows 徽标键 + M  最小化所有窗口
    Windows 徽标键 + T  在任务栏上循环切换应用
    Windows 徽标键 + R  打开“运行”对话框
    Windows 徽标键 + 逗号 (,)  临时快速查看桌面
    Windows 徽标键 + Pause  显示“系统属性”对话框
    Windows 徽标键 + Tab  打开“任务视图
    Windows 徽标键 + 向上键  最大化窗口
    Windows 徽标键 + 向下键  从屏幕中删除当前应用或最小化桌面窗口

    F11,浏览器全屏
    打开设置(Win + I
    打开文件管理器(Win+ E
    打开操作中心(Win+A)(新通知。。。)
    打开搜索(Win + S)
    打开云剪贴板(Win + V)
    显示桌面( Win+D)
    锁定桌面(Win+L)
    召唤Windows截图(Win + R输入snippingtool)
    调出 Emoji 表情(Win + ;)
    放大镜 (Win++)
    Ctrl + C(或 Ctrl + Insert)  复制选定项
    Ctrl + V(或 Shift + Insert) 粘贴选定项
    Ctrl + Z  撤消操作
    Ctrl + Y  重做操作
    F2  重命名选定项
    F3 在文件资源管理器中搜索文件或文件夹
    Alt + F8  在登录屏幕上显示密码
    Ctrl + Esc  打开“开始”屏幕
    Ctrl + Shift + Esc  打开任务管理器
    Ctrl + D(或 Delete)  删除选定项并将其移动到“回收站”
    Shift + Delete  无需先将选定项移动到“回收站”,直接将其删除

    在Windows中关闭窗口的几种快捷方法

    • 方法一:ALT+F4。此方法是指先按住键盘上的ALT功能键不放,再按一下键盘上的F4键,则会关闭当前窗口。
    • 如 果打开了多个窗口,则每按一次Alt+F4键就会关闭一个窗口。
    • 方法二:Ctrl+W。先按下键盘上的Ctrl键不放,再按下键盘上的w,则会关闭当前活动窗口。
    • 方法三:双击窗口程序图标。在窗口标题栏最左侧为窗口程序图标位置,把鼠标放在此区域双击也可以关闭当前窗口。
    • 方法四:右击窗口标题栏。在窗口的标题栏上右击,在弹出的右键菜单中选择”关闭“按钮。
    • 方法五:任务栏图标。在任务栏上右击要关闭的窗口图标,在弹出的快捷菜单中选择”关闭“命令。

    在Windows中最小化窗口的几种快捷方法

    • 最小化所有窗口:
      方法一:按快捷键“win+M”,其操作方法是,按住Windows键不动,再单击M键,最小化所有窗口。
    • 方法二:按快捷键“win+D”,最小化所有窗口,与快捷键“win+M”不同的是,再按快捷键“win+D”,所有最小化的窗口恢复原状。
    • 最小化所有非当前窗口:
      把光标移到当前窗口的标题栏上,按住鼠标左键,拖动窗口,晃一晃,大家可以惊奇地发现,除开当前窗口外其它窗口全部最小化了,此种方法对于桌面上打开的窗口比较多,主要用一二窗口,其它窗口又不能关掉,这样能快速最小化 所有非当前窗口。
    • 同样的方法,按住鼠标左键,拖动窗口,晃一晃,原来所有最小化的窗口恢复原来的状态。
      注意:以上的操作方法对于win8,win10同样适用
    • win7、win8下,win+1即可dao启动任务栏du的zhi第一个程序dao;win+2即可启动任务栏的第二个程序,以此类推专。如果该程序已打开,按属win+数字即可最小化或切换到该窗口。这就是最小化当前窗口的方法(XP不适用)

    标题

    • WIN+D,显示桌面;然后ALT+TAB,显示你要的程序窗口。
    • 只用一次快捷键无法达到你要的效果,不过只用ALT+TAB可以让你要的程序窗口显示在最前面。`
    • Alt+空格+N 最小化当前窗口;win键+D最小化全部(显示桌面)

    Win:打或关闭始菜单
    Win + Pause:显示系统属性框(控制面板
    Win + D:显示桌面
    Win + M:化所窗口
    Win + SHIFT + M:原化窗口桌面
    Win + E:打我电脑bai
    Win + F:搜索文件或文件夹
    Ctrl + Win + F:搜索计算机(您网络)
    Win + L:锁定您计算机或切换用户
    Win + R:打运行框
    Win + T:切换任务栏程序(觉alt+ESC )
    Win + 数字:让位于任务栏指定位置(按数字作序号)程序新实例(觉比较新颖貌似快速启)
    Shift + Windows logo key +number:Start a new instance of the program pinned to the taskbar in the position indicated by the number.
    Ctrl + Win + 数字:让位于任务栏指定位置(按数字作序号)程序切换窗口
    ALT + Win + 数字:让位于任务栏指定位置(按数字作序号)程序显示跳转清单
    Win + TAB:循环切换任务栏程序并使用Aero三维效
    Ctrl + Win + TAB:使用向键循环循环切换任务栏程序并使用Aero三维效
    按Ctrl + Win + B:切换通知区域显示信息程序
    Win + 空格:预览桌面
    Win + ↑:化窗口
    Win + ↓:化窗口
    Win + ←:化窗口左侧屏幕
    Win + →:化窗口右侧屏幕
    Win + Home:化所窗口除前激窗口
    Win+ SHIFT + ↑:拉伸窗口屏幕顶部底部
    Win+ SHIFT + →/←:移窗口显示器另
    Win + P:选择演示文稿显示模式
    Win + G:循环切换侧边栏工具
    Win + U:打轻松访问
    Win + x:打Windows移

    标题

    Alt+空格+N 最小化当前窗口

    其他:
    单独按Windows:显示或隐藏 “开始”功能表
    Windows+BREAK:显示“系统属性” 对话框
    Windows+D:显示桌面
    Windows+M:最小化所有窗口
    Windows+Shift+M:还原最小化的窗口
    Windows+E:开启“资源管理器”
    Windows+F:查找文件或文件夹
    Windows+CTRL+ F:查找电脑
    Windows+F1:显示 Windows “帮助”
    Windows+R:开启“运行” 对话框
    Windows+U:开启 “公用程序管理器”
    Windows+L:切换使用者(Windows XP新功能)

    Ctrl快捷键
    Ctrl+S 保存
    Ctrl+W 关闭程序
    Ctrl+N 新建
    Ctrl+O 打开
    Ctrl+Z 撤销
    Ctrl+F 查找
    Ctrl+X 剪切
    Ctrl+C 复制
    Ctrl+V 粘贴
    Ctrl+A 全选
    Ctrl+[ 缩小文字
    Ctrl+] 放大文字
    Ctrl+B 粗体
    Ctrl+I 斜体
    Ctrl+U 下划线
    Ctrl+Shift 输入法切换
    Ctrl+空格 中英文切换
    Ctrl+回车 QQ号中发送信息
    Ctrl+Home 光标快速移到文件头
    Ctrl+End 光标快速移到文件尾
    Ctrl+Esc 显示开始菜单
    Ctrl+Shift+< 快速缩小文字
    Ctrl+Shift+> 快速放大文字
    Ctrl+F5 在IE中强行刷新
    Ctrl+拖动文件 复制文件
    Ctrl+Backspace 启动\关闭输入法
    拖动文件时按住Ctrl+Shift 创建快捷方式
    Alt快捷键

    Alt+F4 关闭当前程序
    Alt+空格+C 关闭窗口
    Alt+空格+N 最小化当前窗口
    Alt+空格+R 恢复最小化窗口
    Alt+空格+X 最大化当前窗口
    Alt+空格+M 移动窗口
    Alt+空格+S 改变窗口大小
    Alt+Tab 两个程序交换
    Alt+255 QQ号中输入无名人
    Alt+F 打开文件菜单
    Alt+V 打开视图菜单
    Alt+E 打开编辑菜单
    Alt+I 打开插入菜单
    Alt+O 打开格式菜单
    Alt+T 打开工具菜单
    Alt+A 打开表格菜单
    Alt+W 打开窗口菜单
    Alt+H 打开帮助菜单
    Alt+回车 查看文件属性
    Alt+双击文件 查看文件属性
    Alt+X 关闭C语言
    Shift快捷键

    Shift+空格 半\全角切换
    Shift+右击 右菜单打开方式
    Shift+F10 选中文件的右菜单
    Shift+多级文件 全部关闭
    Shift+Del 直接删除文件
    Shift+^ 处在中文标点符号半角在智能ABC中省曰号
    Shift+\ 处在中文标点符号半角在智能ABC中顿号
    快捷键

    常规键盘快捷键

    Ctrl + C 复制。
    Ctrl + X 剪切。
    Ctrl + V 粘贴。
    Ctrl + Z 撤消。
    DELETE 删除。
    Shift + Delete 永久删除所选项,而不将它放到“回收站”中。
    拖动某一项时按 CTRL 复制所选项。
    拖动某一项时按 CTRL + SHIFT 创建所选项目的快捷键。
    F2 重新命名所选项目。
    CTRL + 向右键 将插入点移动到下一个单词的起始处。
    CTRL + 向左键 将插入点移动到前一个单词的起始处。
    CTRL + 向下键 将插入点移动到下一段落的起始处。
    CTRL + 向上键 将插入点移动到前一段落的起始处。
    CTRL + SHIFT + 任何箭头键 突出显示一块文本。
    SHIFT + 任何箭头键 在窗口或桌面上选择多项,或者选中文档中的文本。
    Ctrl + A 选中全部内容。
    F3 搜索文件或文件夹。
    Alt + Enter 查看所选项目的属性。
    Alt + F4 关闭当前项目或者退出当前程序。
    ALT + Enter 显示所选对象的属性。
    Alt + 空格键 为当前窗口打开快捷菜单。
    Ctrl + F4 在允许同时打开多个文档的程序中关闭当前文档。
    Alt + Tab 在打开的项目之间切换。
    Alt + Esc 以项目打开的顺序循环切换。
    F6 在窗口或桌面上循环切换屏幕元素。
    F4 显示“我的电脑”和“Windows 资源管理器”中的“地址”栏列表。
    Shift + F10 显示所选项的快捷菜单。
    Alt + 空格键 显示当前窗口的“系统”菜单。
    Ctrl + Esc 显示“开始”菜单。
    ALT + 菜单名中带下划线的字母 显示相应的菜单。
    在打开的菜单上显示的命令名称中带有下划线的字母 执行相应的命令。
    F10 激活当前程序中的菜单条。
    右箭头键 打开右边的下一菜单或者打开子菜单。
    左箭头键 打开左边的下一菜单或者关闭子菜单。
    F5 刷新当前窗口。
    BackSpace 在“我的电脑”或“Windows 资源管理器”中查看上一层文件夹。
    Esc 取消当前任务。
    将光盘插入到 CD-ROM 驱动器时按 SHIFT 键 阻止光盘自动播放
    对话框快捷键

    Ctrl + Tab 在选项卡之间向前移动。
    Ctrl + Shift +Tab 在选项卡之间向后移动。
    Tab 在选项之间向前移动。
    Shift + Tab 在选项之间向后移动。
    ALT + 带下划线的字母 执行相应的命令或选中相应的选项。
    Enter 执行活选项动或按钮所对应的命令。
    空格键 如果活选项动是复选框,则选中或清除该复选框。
    箭头键 活选项动是一组选项按钮时,请选中某个按钮。
    F1 显示帮助。
    F4 显示当前列表中的项目。
    BackSpace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹。
    自然键盘快捷键

    在“Microsoft 自然键盘”或包含 Windows 徽标键() 和“应用程序”键() 的其他兼容键盘中,您可以使用以下快捷键。

    请按 目的
    显示或隐藏“开始”菜单。
    win+ BREAK 显示“系统属性”对话框。

    • D 显示桌面。
    • M 最小化所有窗口。
    • Shift + M 还原最小化的窗口。
    • E 打开“我的电脑”。
    • F 搜索文件或文件夹。
      CTRL+ + F 搜索计算机。
    • F1 显示 Windows 帮助。
    • L 如果连接到网络域,则锁定您的计算机,或者如果没有连接到网络域,则切换用户。
    • R 打开“运行”对话框。
      显示所选项的快捷菜单。
    • U 打开“工具管理器”。
      辅助键盘快捷键

    请按 目的
    右侧 SHIFT 键八秒钟 切换“筛选键”的开和关。
    左边的 ALT + 左边的 SHIFT + PRINT SCREEN 切换“高对比度”的开和关。
    左边的 ALT + 左边的 SHIFT + NUM LOCK 切换“鼠标键”的开和关。
    Shift 键五次 切换“粘滞键”的开和关。
    Num Lock 键五秒钟 切换“切换键”的开和关。

    • U 打开“工具管理器”。
      “Windows 资源管理器”键盘快捷键

    请按 目的
    END 显示当前窗口的底端。
    主页 显示当前窗口的顶端。
    NUM LOCK + 数字键盘的星号 (*) 显示所选文件夹的所有子文件夹。
    NUM LOCK + 数字键盘的加号 (+) 显示所选文件夹的内容。
    NUM LOCK + 数字键盘的减号 (-) 折叠所选的文件夹。
    左箭头键 当前所选项
    处于展开状态时折叠该项,或选定其父文件夹。
    右箭头键 当前所选项处于折叠状态时展开该项,或选定第一个子文件夹

    展开全文
  • 众所周知,窗口的移动都是通过鼠标拖动窗口标题栏来实现的,那么现在应用程序的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。程序编译运行后的界面效果如图一所示: 图一...

     目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。程序编译运行后的界面效果如图一所示:


    图一、无标题栏的对话框界面 

      一、实现方法

      解决无标题栏窗口的拖动问题有两种方案,一种方案是使用常规思路来处理鼠标拖拽事件,当窗口获得WM_LBUTTONDOWN(OnLButtonDown)时,通过设置标志并调用CWnd::SetCapture()函数来让当前窗口捕捉鼠标消息,应用程序进入移动模式,此时只要有WM_MOUSEMOVE消息过来,就可以据此移动框架窗口,最后当用户释放鼠标按钮,则WM_LBUTTONUP消息处理例程清除标志并调用CWnd::ReleaseCapture()函数将鼠标控制返还给Windows。这种方法比较繁琐,首先要决定窗口准备移到哪?然后要想好如何重绘窗口等等,而且根据屏幕显示属性对话框"效果"页中"视觉效果"项的"拖动时显示窗口中内容"复选框是不是选中,拖动效果是不同的。那么你怎么知道设置的信息呢?方法是调用SystemParametersInfo(SPI_GETDRAGFULLWINDOWS)。Windows要程序员来事无巨细地处理这些繁琐的事情真是太糟了。

      由于Windows本身知道通过鼠标点住标题栏可以移动窗口,那么能不能将鼠标在窗口客户区任何地方的点击拖动行为都模仿成好像是在标题栏中一样呢?答案是肯定的,这样就产生了第二种拖动窗口移动的方法。实际上,用鼠标点住对话框背景进行拖动操作并不难,但是你必须了解在标题栏里拖动窗口的原理。Windows首先确定鼠标点中了哪个窗口,然后向那个窗口发送一个WM_NCHITTEST消息找出此窗口的哪个"非客户区"(如边界、最大化/最小化按钮、菜单、标题等等)拥有鼠标光标。接着默认的窗口过程响应消息并返回一个特定的代码。如果鼠标指针落在标题栏中,那么这个特定代码就是HTCAPTION,此时Windows便进入拖拽模式,以便用户能够对窗口进行移动操作。所以要想在客户区里用鼠标拖动对话框,那么只要在客户区里模仿标题栏里的鼠标拖动行为即可。下面的代码通过处理WM_NCHITTEST消息实现了对话框的拖动操作:

    UINT CMyDialog::OnNcHitTest(CPoint pt)
    {
     CRect rc;
     GetClientRect(&rc);
     ClientToScreen(&rc);
     return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);


      上面这个代码很容易理解,当鼠标落在客户区内,函数返回HTCAPTION。对于一个简单的对话框来说,仅仅用这个代码就完全可以实现在对话框背景内的拖动操作。因为Windows使用z-order坐标来确定鼠标下是哪个窗口,所以对话框中其它的所有对象照常工作。如果用户单击某个控制,只要这个控制不是静态位图图像或者文本,那么Windows都将鼠标事件发送到该控制上,而不是对话框。由于静态位图图像或者文本对于对话框是透明的,所以鼠标在上面的拖动同样实现移动,而对于对话框中的编辑框、按钮、组合框等其它非静态控制则按通常的行为方式运行。

      如果应用不是一个纯粹的对话框程序,而是是包含CFormView或其它非对话框视图,处理方法几乎是一样的,只需在视图代码中做一点小小的改动即可,因为Windows在发送WM_NCHITTEST消息时,是将它发送到鼠标光标下的框架/视图最顶层非透明窗口,由于视图首先获得WM_NCHITTEST消息。所以只要在视图的WM_NCHITTEST消息处理例程中返回HTTRANSPARENT,让视图对鼠标点击"透明"即可。注意是在视图中,而不是在框架中加入下面代码:

    UINT CMyView::OnNcHitTest(CPoint pt)
    {
     return HTTRANSPARENT;


      这样做以后,Windows将忽略视图并继续搜索能接收WM_NCHITTEST的窗口。如果顺利的话,将找到父窗口,这时用与对话框相同的WM_NCHITTEST处理代码即可,即在客户区中的点击返回HTCAPTION。你甚至可以通过鼠标坐标的象素计算,在规定的局部范围内实现视图透明。 

      二、编程步骤

      1、 启动Visual C++6.0,生成一个基于对话框的应用程序,将该程序命名为"DragMovDlg";

      2、 将程序中对话框的Style设置为"PopUp",Border设置为"None";

      3、 使用Class Wizard为对话框添加WM_NCHITTEST消息响应处理函数;

      4、 添加代码,编译运行程序。

      本实例主要探讨了如何处理WM_HITTEST消息来"欺骗"Windows当前鼠标就在程序的标题栏中,从而实现对话框窗体的拖动。这种方法不仅适用于对话框程序,对于视图文档结构的应用程序也是适用的。

     

     

     

    上面的方法看了网上的资料总结的,当然了还有更简单的,只要在OnLButtonDown事件中添加如下一句代码也可以实现

      PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));

      这里注意,在视图窗口中添加可能不起作用,这段代码只能适合对话框类型

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Windows运行机理——窗口和句柄

    千次阅读 2018-03-17 14:02:46
    Windows运行机理这系列文章都是来至于《零基础学Qt4编程》——吴迪,个人觉得写得很好,所以进行了搬运和个人加工1. 窗口窗口Windows应用程序一个非常重要的...一个应用程序窗口通常包含标题栏,菜单栏,系统...
  • 接触C#一段时间,自己写的一个窗口,想重绘窗体的标题栏,遇到一些问题和解决方法总结: 一、重绘标题栏的几种实现: Winform创建一个窗口,隐藏窗口标题栏,自己通过拖控件实现。 引用第三方库进行实现。(这...
  • 普通windows窗口,如果其处于非当前窗口时,直接单击标题栏能够将其变为当前窗口并同时实现拖动。 当winform窗口设置为无标题栏,并用程序实现点击某个控件进行拖动时,若其为当前窗口,可以正常单击拖动。若其为...
  • 一:步骤 (1)新建一个基于对话框的MFC程序,打开对话框属性设置界面,去掉对话框的标题栏和边界BORDER(vc和vs的设置相似,这里使用的是vs...(3)为了使自绘的标题栏能够用鼠标拖动窗口,并且使自绘的关闭按钮能够
  • 众所周知,窗口的移动都是通过鼠标拖动窗口标题栏来实现的,那么现在应用程序的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。 <br />解决无标题栏窗口的拖动问题有两种...
  • windows窗口中控件的样式

    千次阅读 2019-07-05 15:03:34
    将组合框编辑控件输入的文本从Windows字符集转换为OEM字符集,然后再转换回Windows字符集。当应用程序调用CharToOem函数将组合框Windows字符串转换为OEM字符时,这可确保正确的字符转换 。此样式对于包含...
  • 实现无标题栏对话框的拖动

    千次阅读 2011-06-23 17:21:00
    众所周知,窗口的移动都是通过鼠标拖动窗口标题栏来实现的,那么现在应用程序的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。一、实现方法 解决无标题栏窗口的拖动问题有两种...
  • windows程序窗口

    千次阅读 2010-09-29 11:43:00
    窗口Z次序:表明了重叠窗口中窗口的位置,这个窗口堆是按照一个假象的轴定位的,这个轴是从屏幕向外伸展的Z轴,上面的窗口覆盖下面的窗口Windows系统管理三个独立的Z次序----一个用于顶层窗口、一个...
  • 文章目录一、前言二、使用Spy++工具分析窗口三、C#通过Windows API捕获窗口,获取窗口文本四、附录:Windows窗口消息 一、前言 项目是Unity开发的,上架了QQ游戏大厅,需要兼容XP系统。 QQ游戏大厅启动游戏的流程是...
  • Windows 窗口样式

    2014-09-06 21:30:41
    WS_CAPTION 用于创建具有标题栏窗口(即表示 WS_BORDER 样式)。 不能与 WS_DLGFRAME 样式一起使用。 WS_CHILD 用于创建子窗口。 不能与 WS_POPUP 样式一起使用。 WS_CHILDWINDOW 和 WS_...
  • windows窗口属性详解

    千次阅读 2015-07-22 23:53:30
    息框,也可以用于应用程序的主窗口, 弹出窗口可以不必具有标题栏 2.Overlapped窗口: 一个重叠窗口是一个必须具有WS_OVERLAPPED属性的窗口,也就是一个重叠窗口必须具有边框,标题栏,客户区域。重叠窗口 可以是一个子窗
  • 标题栏对话框的拖动

    千次阅读 2005-12-17 01:25:00
    众所周知,窗口的移动都是通过鼠标点住标题栏拖动窗口实现的,那么现在没有了标题栏,如何移动对话框呢?本文拟针对这个问题提出解决的办法。 解决这个问题有两种方案。一种很业余,另外一种比较专业。前者使用一种...
  • (本文尝试通过一些简单的实验,来分析Windows窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++、Windows编程及MFC经验,还得有一定动手能力。文中可能出现一些术语不统一的现象,比如“子窗口”,有...
  • Windows窗口消息介绍

    千次阅读 2018-08-22 18:27:44
    Windows窗口消息介绍 ////////////////////////////////////////////////////////////////////////// #include "AFXPRIV.H"//消息值的定义来源 #include "Dde.h"//DDE消息值的定义来源 #...
  • 一、去除安卓应用标题栏 sencha touch打包android安装包,去掉标题栏titlebar的简单方法 (有更复杂更好的方法,参看“二、利用反编译修改apk的应用名称为中文”) 利用sencha cmd命令打包安卓apk安装包之前...
  • Windows 窗口发送消息参数详解

    万次阅读 2020-06-24 15:32:25
    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg,wparam,iparam) 英文函数原型: sendmessage(hwnd,...
  • windows的资源管理器窗口中,其左边窗口显示的内容是“系统的文件夹树”。在“资源管理器”窗口中,左边的文件夹窗口以树形目录的形式显示文件夹,右边的文件夹内容窗口是左边窗口中所打开的文件夹的内容。 文件...
  • Windows桌面应用开发-什么是窗口

    千次阅读 2013-04-20 12:34:31
    MSDN在线原文(英文) ...这种类型的窗口被称为应用程序窗口或主窗口,它通常是一个带有标题栏,最小化和最大化按钮和其它标准UI元素的框架。这个框架被称为窗口的非客户区,这么说是因为窗口的这部分是由
  • C#打开任务程序窗口
  • 这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以轻而易举地设置窗口标题栏文字,移动窗体等等。以前要实现这些操作常常需要一大堆api函数,现在只需要一点点代码就可以了,完全让您脱身于api函数的...
  • 注:以下内容为学习笔记,多数是从书本、资料得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚! 1.一个...
  • Windows窗口消息大全

    千次阅读 2014-04-15 12:10:56
     IDSTR(WM_CHILDACTIVATE),"点击窗口标题栏或当窗口被激活、移动、大小改变时,会发送本消息给MDI子窗口",  IDSTR(WM_QUEUESYNC),"本消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的HOOK程序分离出...
  • Windows 窗口绘图基础 MFC

    千次阅读 2008-01-23 11:41:00
    而在窗口化多任务环境如Windows中,程序则无此自由。因为程序 A 的输出必须与程序 B 的输出相隔离。首先这意味着各程序的输出必须限制在自己的窗口中。 GDI使用一简单的机制保证在窗口中画图的各程序遵循这些规则。...
  • Windows窗口消息

    千次阅读 2014-06-19 16:33:36
    IDSTR(WM_CHILDACTIVATE),"点击窗口标题栏或当窗口被激活、移动、大小改变时,会发送本消息给MDI子窗口", IDSTR(WM_QUEUESYNC),"本消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的HOOK程序分离出用户...
  • 第三章 窗口于消息 前面的例子都使用MessageBox来创建窗口 ,单他...另外还有一种类型的窗口是对话框,这种窗口可以不带标题栏 还可能包含,按钮,单选按钮,复选框,列表框,滚动条,文本框等。每一个这些对象都被称为

空空如也

空空如也

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

windows中某个窗口的标题栏