精华内容
下载资源
问答
  • windows窗口类型

    千次阅读 2015-01-05 19:48:11
    window窗口有下面的几个基本的分类 Overlapped Windows 重叠窗口 Pop-up Windows 弹出窗口 Child Windows窗口 Layered Windows 分层窗口 Message-Only Windows 什么是层叠窗口 层叠窗口最典型的就是我们的...

    windows建立的是怎样的一套窗口理论体系,

    window窗口有下面的几个基本的分类

    • Overlapped Windows 重叠窗口
    • Pop-up Windows 弹出窗口
    • Child Windows 子窗口
    • Layered Windows 分层窗口
    • Message-Only Windows

    什么是层叠窗口

    层叠窗口最典型的就是我们的一个应用窗口的主窗口,如果用WS_OVERLAPPEDWINDOW的属性创建了窗口,那么窗口一定会有标题栏,窗口边框,窗口菜单,和最大最小按钮。

    层叠窗口是没有父窗口的,也就是用GetParent()获取到的父窗口是NULL

    什么是弹出窗口

    弹出窗口跟层叠窗口最大的区别就是弹出窗口一般都会有个父窗口的,如我们常用的MessageBox就是弹出窗口,而它的父窗口一般就是我们调用地方的窗口。

    弹出窗口是特殊的层叠窗口,通常会是dialog对话框,message对话框

    创建窗口的时候指定WS_POPUP风格就会创建弹出窗口

    什么是子窗口

    子窗口通常会有 WS_CHILD风格,并且只能够被分配到父窗口的客户区域。子窗口必须要有父窗口,父窗口可以是层叠窗口也可以是弹出窗口甚至也可以是其它的子窗口

    和父窗口的关系
    一个已经存在的子窗口是可以通过SetParent来改变它的父窗口的,也就是可以将子窗口从旧的父窗口的客户区中删除掉,而移动到新的父窗口的客户区域。也就是说子窗口其实是可以随意改变父窗口的

    因为子窗口的关系,于是应用程序常常会维持着一个窗口关系链,就像是一个族谱一样。我们可以使用IsChild来判断一个窗口是否是另一个窗口的子窗口

    什么是分层窗口

    使用分层窗口能够显著的提升拥有混合形状的窗口的性能和视觉效果。这些窗口可能会有动态形状,或者你希望使用alpha混合效果,分层窗口都是不错的选择。系统能够自动的组合并且重绘分层窗口和基本的应用窗口。因此分层窗口能够被平滑的渲染,并且不会有典型混合窗口区域的闪烁的情况。此外分层窗口还能够有部分窗口半透明的效果,这是因为alpha效果的混合

    也就是在多窗口叠加的时候使用这个属性?

    分层窗口实际上一种在Windows下能够自动地与非活动窗口进行合成的一种窗口.

    利用分层窗口可以实现不规则窗口和窗口的Alpha混合效果。操作系统自动混合和重画分层窗口而且平滑渲染和没有抖颤。

    分层窗口的特点就在于,它将窗口的绘制操作进行了重新定义::【由操作系统(而不是应用程序),完成重绘操作,完成的方式是"合成":将窗口看成一副位图,窗口外形的变化只是"位图"的变化!而不需要非得通过对WM_PAINT消息来进行.这样就能够保证分层窗口在概念上包括两层含义:与传统相比,这种窗口从外观上看起来恩奇怪(它可以是透明或者半透明的,或者是异性的);二是【重定向】:对窗口的重绘操作不需要你手工添加代码来维护,系统会自动将重绘操作在后台完成!

    http://msdn.microsoft.com/en-us/library/ms997507.aspx

    什么是“仅消息”窗口

    一个“仅消息”的窗口允许你发送和接收消息。它是不可见的,没有z序,不能够被枚举,并且不能接收广播消息。这种窗口只是简单的派遣(中转)消息。


    总参考:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#types
    http://bbs.csdn.net/topics/390716333?page=1

    展开全文
  • Windows窗口及对话框

    千次阅读 2016-02-18 22:19:46
    1、Windows窗口介绍    在Windows系统中,每个窗口对象都对应一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理窗口,这个数据结构中四个数据用来构建list,即child、...
    1、Windows窗口介绍
        
         在Windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理窗口,这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。而窗口之间的关系有两种:owner-owned(拥有-被拥有关系)、
    parent-child(父-子关系)。
         如果单纯说明窗口的类型,那么Windows中定义了3种窗口类型:
         CHILD           :子窗口
         POPUP          :弹出窗口,适合作为主窗口。
         OVERLAPPED:重叠式窗口,适合作为主窗口,默认具有标题栏等属性。
         两种窗口风格:
         WS_CLIPSIBLING    :适用于同一级子窗口之间,表示当某设置了该风格的子窗口需要重绘时,被遮挡区域不进行重绘;
         WS_CLIPCHILDREN:适用于父窗口和子窗口之间,表示当某设置了该风格的父窗口需要重绘时,被遮挡区域不进行重绘;
    在Windows窗口中,overlapped窗口和popup窗口肯定具有WS_CLIPSIBLING风格,即使在代码中人为去掉该风格,Windows还是会自动添加上。

    2、作为子窗口的控件

         控件属于子窗口,是系统已经定义好的窗口类,不需要进行注册,也不需要添加消息处理函数。只需在主窗口得到WM_CREATE消息时,建立子窗口即可。
         控件的创建方式:
         a.随对话框资源一同创建,属于可视化编程方式可以方便地设置各个控件的属性;
         b.CreateWindow创建,代码控制,创建的位置更为精准;

         所有控件都有且只有一个ID,通过查看资源的属性即可看到操作控件所使用的控件句柄可由GetDigItem函数得到。此时的父窗口更像一个消息中转站,子控件发生的任何行为都会给父窗口发送消息,父窗口得到消息之后将根据消息的内容,或是给其他子控件发送控制消息,亦或其他操作。
         一般情况下,我们都是直接将控件拖拽到对话框中在属性栏中设置ID和标题即可,常用控件主要有Button/CheckBox/EditControl/ComboBox/StaticText/Picture Control/Process Control/List Control/Table Control等。

    3、对话框

         用途:
         a.发送消息:应用程序向用户发送消息时使用,常见有警告消息框,提示消息框等;
         b.接收消息:应用程序希望得到用户输入时使用;
         c.提供消息:应用程序向用户提供信息时使用;

         对话框与一般应用程序子窗口比较:
         a.创建形式:在资源描述文件定义对话框模板完成创建;
         b.独立的消息处理函数:应用程序在消息循环中判断消息队列中的消息,若为对话框消息,则将消息发往对话框处理函数进行处理;
         c.包含多种控件:对话框中根据需要包含各式形状和功能的控件,应用程序通过控件完成与用户之间的对话框交互。

         对话框分类:
         a.模态对话框:要求用户必须结束该对话框之后才可切换到其他窗口,即该对话框与同一应用程序中的其他窗口互锁;
                               使用DialogBox函数创建,自带消息循环。
         b.非模态对话框:允许在结束该对话框之前切换到其他窗口操作;使用CreateDialog函数创建,需编写消息循环。

         
    展开全文
  • Windows 窗口层次关系

    千次阅读 2014-05-14 11:08:32
    相信在Windows 下面编程的很多兄弟们都不是很清楚Windows窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。下面就说说Windows 中桌面(Desktop...
    相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。下面就说说Windows 中桌面(Desktop)以及顶层窗口,以及子窗口之间的关系。 
    

        在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的关系和自身的一些信息,如:是否可见,窗口的所有者,窗口的父/子关系等等信息,当窗口创建、销毁、显示的时候,就会用到这些信息。

           在每一个窗口实例中,有四个元素被窗口管理器用来建立窗口管理链表。

          

    • Child  指向窗口子窗口的句柄
    • Parent:指向窗口父窗口的句柄
    • Owner:指向窗口所有者的句柄
    • Next   指向下一个同属窗口的句柄

        众所周知当Windows初始化的时候,它创建桌面这个窗口,桌面覆盖着整个窗口,窗口管理器用这个窗口作为窗口链表中第一个元素。因此桌面在窗口的层次关系中在最上层。

       在窗口层次关系中,桌面窗口下一层窗口叫做顶层窗口,顶层窗口就是那些不是子窗口的窗口,顶层窗口不能够有WS_CHILD属性。窗口管理器是如何把桌面窗口和顶层窗口联系起来的呢?窗口管理器把顶层窗口都组织到一个链表中,而这个链表的头存储的就是桌面窗口的子窗口句柄,每一个子窗口通过Next就可以找到链表中下一个窗口了。这个链表被称为子窗口链表,在同一个子窗口链表中的窗口是互为同属窗口,所有顶层窗口都是同属窗口窗口在子窗口链表中的次序也表明了窗口距离距离桌面窗口的距离[依次减小,第一个最上面,第二个在第一个下面,最后一个离桌面最近,也就是Z次序依次减小,第一个Z次序最大最能被看见]。顶层窗口所形成的子窗口链表构成了一个轴,窗口管理器就是根据Z序列来觉得窗口的哪一部分是显示的,哪一部分是被遮盖的。

       所有顶层窗口的父窗口都是指向桌面窗口的这样一来顶层窗口是桌面窗口的子窗口,所有顶层窗口构成的链表是桌面窗口的子窗口链表。当顶层窗口创建的时候,窗口管理器顶层窗口放在Z轴的顶上,这样使得整个窗口可见,窗口管理器把窗口插入到桌面窗口子窗口链表的前面。WS_EX_TOPMOST这个属性控制着窗口管理器创建顶层窗口,窗口管理器把没有WS_EX_TOPMOST属性的窗口放在具有WS_EX_TOPMOST属性的窗口的后面,这样就使得具有WS_EX_TOPMOST属性的窗口一直显示在前面

       

       在顶层窗口之间还有另外一直关系,拥有或者属于其他的顶层窗口,属于其他窗口的窗口叫做归属窗口,拥有其他窗口叫做宿主窗口,在Z轴中,归属窗口一定在他的宿主窗口的前面,如果一个宿主窗口最小化,那么归属他的窗口会隐藏掉,如果宿主窗口隐藏起来,归属他的窗口不会被隐藏掉。如果有三个窗口ABCA拥有 BB拥有 C,如果A最小化,那么B会隐藏,但是 C还是可见的。怎么才能够在窗口之间建立所有关系呢?方法是在调用CreateWindow或者CreateWindowEx创建窗口的时候,指定hwndParent 参数。

       

       桌面窗口是在窗口层次中的第一层顶层窗口在窗口层次中的第二层子窗口也就是那些创建的时候指定了WS_CHILD 属性的窗口占据了窗口层次的其他层。窗口和子窗口之间的联系,就像桌面窗口和顶层窗口之间的关系一样。

       

       子窗口显示在其父窗口的客户区域,所有同一个窗口子窗口同样建立一个Z轴【次序越大在越最上方】,这个和顶层窗口是类似的,顶层窗口也是显示在其父窗口――桌面窗口的客户区域。

       

    16 位和32 位窗口系统的区别

        窗口之间的父子关系、归属所有关系、以及根据 Z轴来显示的这些规则在16位和32位窗口系统中都是相同的。这样可以是在两种窗口系统中高度的兼容。两种窗口系统的区别在于安全和多线程。

       Windows NT 在原有的窗口层次关系中多增加了一层,每一个运行着Windows NT的系统中都有一个Windows 工作站对象,这个对象是安全对象的第一层,是所有用户安全对象的继承之源,每一个Windows工作站对象可以拥有一些桌面对象,每一个桌面都拥有上面描述的那样的窗口关系。Windows Nt用了两个桌面窗口对象,一个是用来处理登陆界面、屏蔽、锁住工作站等,一个是我们登陆之后进来操作的窗口了。J通常用户是不能够创建和删除桌面的,不过那是通常,实际上在Windows下面也可以实现类似 Linux 中的多个桌面的效果,每一个桌面都是一个独立的世界。

       两种窗口系统还有两位一个区别,在16 位窗口系统中不支持多线程,所以应用程序开发者在创建窗口的时候不必考虑线程的问题了。而在32位窗口系统中由于又支持了窗口的父子关系,归属与拥有关系,同一个窗口下面的所有线程都拥有相同的一个输入队列,应用程序开发者应该明白输入队列是共享的,在同一个时刻只能有一个线程处理消息,其他的线程都在等待输入队列一直到GetMessage或者PeekMessage返回,而且必须注意的是父窗口和子窗口或者是归属与拥有窗口共用同一个线程。

       在32 窗口系统中定义两种新的窗口类型,前台窗口和背景窗口,这两种窗口没有列到窗口的层次关系中,前台窗口就是用户当前操作的窗口,其他的所有窗口都是背景窗口。 32位窗口系统中支持两个函数来处理前台窗口SetForegroundWindowGetForegroundWindow

     

    操作窗口列表

       下面是窗口列表操作的一些函数:

    Ø      EnumChildWindows

    使用这个函数得到一个窗口的所有子窗口,包括子窗口的子窗口。不过在列举的过程中这个函数不能够列出正在创建的或者销毁的窗口。

    Ø      EnumThreadWindows

    使用这个函数可以列出所有属于这个线程的窗口。在这个函数调用之后创建的窗口是不能够被列举出来的。

    Ø      EnumWindows

    使用这个函数列举出所有顶层窗口,不能够列举出子窗口,要列出所有的顶层窗口,使用这个函数比GetWindow安全。使用GetWindow来列出所有的窗口,可能会导致程序无限循环,因为在调用GetWindow的过程中,可能一些窗口已经销毁了。EnumWindows不能够列举出调用这个函数之后创建的顶层窗口。

    Ø      FindWindow

    可以使用这个函数通过类名或者使用窗口的标题来找到顶层窗口,这个函数不能够用来找子窗口,这个函数不区分参数的大小写。这个函数在Z轴中寻找窗口,找到了之后,就会返回。

    Ø      GetDesktopWindow

    得到桌面窗口句柄

    Ø      GetNextWindow

    使用这个函数得到这个窗口的同属窗口,在16 位窗口系统中GetNextWindow GetWindow是两个不同的函数,在32位系统中这个函数是通过GetWindow来实现的。

    Ø      GetParent

    如果一个窗口存在父窗口,那么可以通过这个函数得到窗口的父窗口,如果窗口是顶层窗口,则返回其所有者窗口句柄。

    Ø      GetThreadDesktop

    这个函数用来得到指定线程的所属的桌面窗口句柄,在win95 win98下面由于不支持多桌面,每次调用该函数都返回同一个值。

    Ø      GetTopWindow

    可以用这个函数来得到给定窗口的第一个子窗口的句柄,如果传递给函数的参数是NULL的话,那么这个函数将会返回最上面的顶层窗口。

    Ø      GetWindow

    应用程序可以调用这个函数来在窗口列表中导航,这个函数有两个参数,一个是窗口的句柄,另外是要得到的窗口句柄和这个窗口之间的关系。

    ·        GW_HWNDNEXT:这个函数返回给定窗口的下一个同属窗口

    ·        GW_HWNDPREV:返回给定窗口的前一个同属窗口  

    ·        GW_HWNDFIRST:返回给定窗口的第一个同属窗口

    ·        GW_HWNDLAST:返回给定窗口的最后一个同属窗口

    ·        GW_OWNER:返回给定窗口的所有者窗口句柄

    ·        GW_CHILD:返回给定窗口的第一个子窗口句柄  

    Ø     IsChild

    这个函数有两个参数,两个窗口句柄,判断两个窗口是否存在父子关系  

    窗口的属性

        当应用程序调用CreateWindow创建窗口的时候,我们必须为窗口指定属性,下面简要的介绍一下窗口的属性。

    WS_OVERLAPPED

       交迭属性是顶层窗口的一种属性,使用这种属性创建的窗口,会被链接到桌面窗口的子窗口链表中,应用程序通常使用这种属性的窗口作为应用程序的主窗口,具有交迭属性的窗口通常具有有标题栏,即使是WS_CAPTION 这个属性没有指定。具有交迭属性的窗口通常都是有边框的,具有交迭属性的窗口可以拥有自己的顶层窗口,也可以所属其他的顶层窗口,所有的这类窗口都具有WS_CLIPSIBLINGS 属性,即使是没有给窗口指定这个属性。

    WS_POPUP

       弹出属性也是应用到顶层窗口的一种属性,使用这种属性创建的窗口会被链接到桌面窗口的子窗口链表中,应用程序通常为对话框窗口设置这个属性,弹出属性和交迭属性的主要区别在于具有弹出属性的窗口不是一定要有标题栏的,而具有交迭属性的窗口则是一定要具有标题栏,具有弹出属性的窗口可以没有边框。和具有交迭属性的窗口一样,具有弹出属性的窗口可以有自己的顶层所属窗口,也可以所属其他的顶层窗口。所有具有弹出属性的窗口必须具有WS_CLIPSIBINGS 属性,即使是用户没有指定这个属性。具有弹出属性的窗口在创建的时候,它的大小和位置不能够使用CW_USEDEFAULT 值。

    WS_CHILD

       子窗口必须具有这个属性,子窗口只能够出现在父窗口的客户区域,这是子窗口和具有交迭属性的窗口以及弹出属性的窗口的主要区别,创建子窗口的时候,位置和大小不能够使用CW_USEDEFAULT 这个值,否则是不能够创建窗口的。

    WS_CAPTION

        当窗口被设置这个属性的时候,窗口的最上头会有标题栏,应用程序可以通过SetWindowText 这个函数来改变标题栏的标题,通常具有标题栏的窗口还具有最大、最小、关闭按钮,和系统菜单。如果一个窗口没有标题栏,那么Windows 是不会创建这些东西的,即使是用户指定了这些属性,系统菜单是依赖标题栏窗口的存在而存在的,如果没有标题栏那么是一定不会有系统菜单的存在的。具有标题栏的窗口通常具有单线的边界具有可以改变窗口大小的属性,通常具有标题栏的窗口是不能具有对话框的边界属性的,除非为窗口设置WS_EX_DLGMODALFRAME 属性。 

    WS_MINIMIZEBOX

       当为窗口设置这个属性的时候,窗口的标题栏上会有一个最小化的按钮,其实对于Windows 来实现这个属性的时候,只是在标题栏上面放置了一个最小化的位图,当用户点击这个最小化位图的时候,窗口最小化,如果最大化位图最在,那么最小化位图被放置在最大化位图的左边。没有这个属性的窗口是不能够最小化的。

    WS_MAXIMIZEBOX

       当为窗口设置这个属性的时候,窗口的标题栏的右上会被放置一个最大化的位图,如果窗口设置了这个属性,用户可以点击最大化的位图或者是通过系统菜单来实现窗口的最大化,没有这个属性的窗口是不能够被最大化的。

    WS_SYSMENU

       如果为窗口指定这个属性,那么就会在窗口的左上角上放置系统菜单位图,系统菜单为用户提供了操作窗口的接口,通常系统菜单会有下面这些系统命令:

    • 恢复最小化的窗口
    • 使用键盘移动窗口
    • 使用键盘改变窗口的大小
    • 最小化窗口
    • 最大化窗口
    • 关闭窗口
    • 切换到其他的任务

    如果一个窗口有系统菜单,用户可以通过点击系统菜单图标来调用系统菜单,或者通过Alt+ 空格的快捷键调出系统菜单,或者通过点击任务栏上窗口的图标来调出系统菜单,如果一个窗口没有系统菜单,那么用户不能够通过键盘来实现系统命令,除非应用程序自身提供了这样的接口。系统菜单对于最大化的窗口也是很有用处的,最大化的窗口覆盖了整个屏幕,这样的窗口不能够被移动,除非恢复到不是最大化的状态,如果这个最大化的窗口有了系统菜单,则就不必一定恢复到非最大化的状态才能够移动。

    WS_HSCROLL

    如果窗口被指定了这个属性,那么窗口会有一个水平的滚动条,窗口是不会自动的滚动滚动条的,如果应用程序要支持滚动条,那么必须自己处理WM_HSCROLL 消息,这个属性通常是在窗口创建的时候,被指定的。 

    WS_VSCROLL

    如果窗口被指定了这个属性,那么窗口会有一个竖直的滚动条,窗口不会自动的滚动滚动条,应用程序必须自己处理WM_VSCROOL 消息来处理滚动条滚动的消息,这个属性通常是在窗口被创建的时候指定的。

    WS_BORDER

    如果窗口被指定了这个属性,那么窗口会有一个单线的边在窗口的周围,如果没有指定这个属性,但是窗口具有标题栏,那么窗口会自动的拥有这个属性,如果窗口没有这个属性,拥有这个属性的窗口不能够通过键盘或者是鼠标改变窗口的大小。

    WS_DLGFRAME

    如果窗口被指定了这个属性,那么窗口具有对话框的边框,这个属性通常是用在对话框窗口的,只能够用在窗口没有标题栏的情况下,如果一个不是对话框的窗口使用了这个窗口,那么窗口必须被指定WS_EX_DLGMODALFRAME 属性。使用这个属性创建的窗口,不能够通过键盘和鼠标改变窗口的大小。

    WS_THICKFRAME

    当窗口被指定了这个属性,那么窗口会有一个可以改变大小的边框,这种属性通常用在程序的主窗口,具有这种属性的窗口的大小可以通过键盘或者鼠标来改变。

    WS_CLIPCHILDREN

    这个属性用在具有子窗口的窗口,使用这个属性,可以使Windows 把子窗口所占的区域拷贝到父窗口,而不是甴父窗口直接的画子窗口所属的区域,如果窗口没有指定这个属性,那么那么父窗口会覆盖子窗口的区域。在一些图片显示或者OpenGL 显示的窗口中,指定这个属性是很重要的。

    WS_CLIPSIBLINGS

    当窗口赋予这个属性,窗口在自绘的时候,不会绘制到同属的子窗口,所有具有交迭属性和弹出属性的窗口都具有这个属性,所有的顶层窗口都具有这个属性,这样一来顶层窗口在自绘的时候,不会绘制在到其他的顶层窗口。 

    WS_VISIBLE

    当窗口被设置这个属性的时候,窗口是可见的,默认的情况下,应用程序必须自己调用ShowWindow 来显示窗口。

    WS_DISABLED

    当窗口被设置这个属性的时候,创建的窗口不能够接受用户的输入,除非应用程序自身提供方法来输入。这个属性通常用在Windows 控件上面。

    WS_CHILDWINDOWS

    这个属性同WS_CHILD。

    WS_OVERLAPPEDWINDOWS

    这个属性同WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,这个属性通常用在应用程序的主窗口。

    WS_POPUPWINDOWS

    这个属性同WS_POPUP | WS_BORDER | WS_SYSMENU,尽管这个属性中包含了WS_SYSMENU 属性,如果窗口没有 WS_CAPTION 属性,那么窗口也不会有系统菜单。

    WS_EX_DLGMODALFRAME

    当窗口设置了这个属性的时候,窗口具有对话框的边框,这个属性通常用在对话框窗口,不过任何窗口都可以使用这个属性来获得对话框的边框。

    WS_EX_NOPARENTNOTIFY

    这个属性是用在子窗口上的,当子窗口设置了这个属性,Windows 不发送WM_NOTIFY 消息给子窗口的父窗口,默认情况下,Windows 会在子窗口创建或者销毁的时候发送WM_NOTIFY 消息给子窗口的父窗口。

    WS_EX_TOPMOST

    这个属性仅用在顶层窗口,对于子窗口设置这个属性是被忽略的,如果窗口设置了这个属性,那么窗口会一直在其他窗口的上面。

    WS_EX_ACCEPTFILES

    窗口设置了这个属性,那么窗口可以接受拖放的对象。

    WS_EX_TRANSPARENT

    这个属性能够使窗口透明,设置了这个属性的窗口的背景使可以被看到的,透明窗口对于鼠标和键盘的消息事件并不是透明的

    展开全文
  • WindowsAPI】窗口类API

    千次阅读 2019-09-22 16:48:10
    窗口类API汇总(持续更新) 1.FindWindowA() 获取窗口句柄 2.SetWindowPos() 设置窗口的位置、大小和显示方式 窗口类API汇总(持续更新) 1.FindWindowA() 获取窗口句柄 官方文档 (1)语法: HWND ...

    目录

    窗口类API汇总(持续更新)

    1.FindWindowA()  获取窗口句柄

    2.SetWindowPos()  设置窗口的位置、大小和显示方式


    窗口类API汇总(持续更新)

     

    1.FindWindowA()  获取窗口句柄

    官方文档

    (1)语法:

    HWND FindWindowA(
      LPCSTR lpClassName,
      LPCSTR lpWindowName
    );

    (2)参数解释

    lpClassName: 窗口的类名

    lpWindowName:窗口的名称

    (一般这两个值都是通过spy.exe来抓取到的);

    (3)返回值

    如果抓取到了,会返回窗口的句柄HWND(实质是窗口的地址)

    如果抓取不到,返回NULL

    PS:这个函数只能搜索根窗口(top-lever window),如果要搜索子窗口,需要通过调用FindWindowExA()来实现

     

    2.FindWindowExA() 寻找某一窗口句柄的子窗口

    官方文档

    (1)语法:

    HWND FindWindowExA(
      HWND   hWndParent,
      HWND   hWndChildAfter,
      LPCSTR lpszClass,
      LPCSTR lpszWindow
    );

    (2)参数解释

     hWndParent: 父窗口的句柄,如果为NULL,则默认桌面为父窗口,即相当于FindWindowA()

     hWndChildAfter:搜索的参照句柄,如果指定,则将从这个子窗口沿Z轴方向开始搜索;为NULL,则从父窗口第一个子窗口搜索

     lpszClass: 子窗口的类名
     lpszWindow: 子窗口的窗口名

    (一般这两个值都是通过spy.exe来抓取到的);

    (3)返回值

    如果抓取到了,会返回子窗口的句柄HWND(实质是窗口的地址)

    如果抓取不到,返回NULL

    PS:这个函数只能搜索父窗口的直接子窗口,如果要搜索孙子或者其他后代窗口,就需要一层一层地调用这个函数

     

    3.SetWindowPos()  设置窗口的位置、大小和显示方式

    官方文档

    (1)语法:

    BOOL SetWindowPos(
      HWND hWnd,
      HWND hWndInsertAfter,
      int  X,
      int  Y,
      int  cx,
      int  cy,
      UINT uFlags
    );

    (2)参数解释

    hWnd:要设置的窗口句柄,可通过FindWindowA()或SPYSPY抓取

    hWndInsertAfter: 设置在Z轴的顺序,即和其他窗口间的遮盖关系。可以是一个具体的句柄也可以是预先定义的宏。详见文档(0是在最上层,1在最下层)

    X,Y:窗口左上角的坐标

    cx,cy:窗口的宽高

    uFlags:显示方式,详见文档,1代表正常显示(原始宽高,将忽略cx,cy的值)

    (3)返回值

    成功,返回一个非0整数

    失败,返回0

     

    展开全文
  • Windows窗口类样式:CS_DBLCLKS

    千次阅读 2014-08-09 10:22:54
    窗口类样式:CS_DBLCLKS CS_DBLCLKS标志使窗口可以检测到双击事件。窗口响应双击的细节如下: 如果窗口没有CS_DBLCLKS标志,系统向窗口依次发送如下消息: WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDOWN WM_...
  • windows窗口销毁

    千次阅读 2015-08-10 19:39:12
    考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(); 2. DestroyWindow会发送WM_DESTROY; 3. WM_DESTROY对应的消息...
  • C++Windows编程之注册窗口类

    千次阅读 2013-01-15 20:28:55
    我们用Visual Studio创建一个win32项目上会自动生成一个注册窗口类。如下: // // 函数: MyRegisterClass() // // 目的: 注册窗口类。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex....
  • 文章目录一、前言二、使用Spy++工具分析窗口三、C#通过Windows API捕获窗口,获取窗口文本四、附录:Windows窗口消息 一、前言 项目是Unity开发的,上架了QQ游戏大厅,需要兼容XP系统。 QQ游戏大厅启动游戏的流程是...
  • Windows 7桌面显示图标窗口类名称

    千次阅读 2011-11-24 16:33:47
    Windows 7下,我们取桌面图标窗口的句柄使用以下语句   在windows XP时代,我们获取桌面图标窗口的句柄往往用一下语句: HWND hwndParent = ::FindWindow( "Progman", "Program Manager" ); HWND ...
  • (本文尝试通过一些简单的实验,来分析Windows窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++、Windows编程及MFC经验,还得一定动手能力。文中可能出现一些术语不统一的现象,比如“子窗口”,...
  • windows程序窗口

    千次阅读 2010-09-29 11:43:00
    Windows系统管理三个独立的Z次序----一个用于顶层窗口、一个用于兄弟窗口、还有一个用于最顶层窗口,最顶层窗口覆盖其他非最顶层窗口,而不管它是不是活动窗口或是前台窗口。应用程序通过设置WS_EX_TOPMOST...
  • Windows编程-创建窗口

    千次阅读 2016-08-04 23:10:22
    窗口创建的基本步骤是: 设计窗口类 注册窗口类 创建窗口 显示更新窗口 ...1.设计窗口类WNDCLASS我们查看MSDN可以知道窗口类的成员变量哪些:typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWnd
  • C# WindowsForm程序同时启动多个窗口类

    千次阅读 2017-01-22 16:09:07
    C# WindowsForm程序同时启动多个窗口类
  • Windows 窗口发送消息参数详解

    万次阅读 2020-06-24 15:32:25
    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg,wparam,iparam) 英文函数原型: sendmessage(hwnd,...
  • 主函数(windows 窗口应用程序)

    千次阅读 2014-01-26 23:26:02
     研究windows的主函数的时候,注册窗口,创建窗口,在主函数中调用结果显示不出来,最后查阅网络才明白,窗口回调函数是必须写好的,一开始我只是简单的写了返回0,调试很多次都不能够显示自己的窗口,最后才通过。...
  • Windows窗口刷新机制详解

    千次阅读 2017-12-28 16:00:13
    1、Windows窗口刷新管理 窗口句柄(HWND)都是由操作系统内核管理的,系统内部一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序,这个排序不关注...
  • Windows程序设计--窗口与消息

    千次阅读 2015-09-09 14:43:04
    进行Windows程序设计时,其实就是在进行一种面向对象的编程。在面向对象中,对象是代码和数据的组合,一个窗口也是一个对象。在用户眼中,窗口是屏幕上的对象,并可借助键盘或鼠标直接与之进行交互。用户对窗口的...
  • Windows窗口风格详细解释

    千次阅读 2009-01-02 00:43:00
    Windows窗口风格详细解释窗口风格是各种窗口开发的重要基础之一。它可以分为普通风格(WS_系列)和扩展风格(WS_EX_系列)。从其特点上,主要分成:1.一表明窗口和其它窗口的关系,包括:WS_CHILD、WS_POPUP...
  • unity 实现调用Windows窗口/对话框交互

    千次阅读 2018-05-16 23:59:49
    unity 实现调用Windows窗口/对话框交互 Unity调用Window窗口 本文提供全流程,中文翻译。助力快速完成 Unity调用 Window api 执行保存/打开操作 用来控制打开/保存项目文件 将个脚本放到项目中,分别绑定2个按钮 ...
  • 在VS2015中,可以通过API函数获取Windows窗口中控件的信息,包括控件句柄、控件显示的文字以及控件类型等。其流程为,首先获取Windows指定窗口的句柄,之后通过回调函数遍历该窗口中的控件句柄,最后通过控件句柄...
  • 如果你也厌倦了复杂的MFC,这里提供了一个非常简单的把C++、对象与窗口类、对象联系起来的方式。
  • Windows窗口程序设计入门(C#版)

    千次阅读 多人点赞 2018-05-05 13:13:04
    我简单说明一下我们要实现的功能:有两个窗体Form1和Form2,这个窗体里面都一个TextBox和一个Button。①当单击Form1里面的Button时,加载出Form2,同时Form2里的TextBox内容和Form1里的TextBox的内容一致;②当...
  • Windows窗口刷新机制相关

    千次阅读 2014-06-21 20:30:27
    Windows窗口刷新机制 1、Windows窗口刷新管理 窗口句柄(HWND)都是由操作系统内核管理的,系统内部一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的...
  • windows如何实现圆角窗口

    千次阅读 2019-09-30 01:38:17
    windows做绘制时,为了美观,常常将一些图片或者窗口的四个角做成圆角。例如QQ窗口: 圆角的实现方案总结 其实总结起来非常的简单,就个步骤: 计算窗口的边界剪切域 通过windows API SetWindowRgn设置该窗口...
  • 创建Windows类

    千次阅读 2014-10-25 15:05:31
    Windows窗口,控件,对话框实质上都是窗口Windows类是一种Windows可以处理的窗口类型描述。在Windows大量预定义的Windows类,但是也可以...有两种数据结构可用于保存Windows类消息:WNDCLASS和WNDCLASSEX。WNDC
  • Windows游戏开发感想&&一个完整的Windows窗口程序

    千次阅读 多人点赞 2017-03-31 15:18:28
    现在的互联网行业从事Windows游戏开发的人实在是太少了。一是因为门槛较高,游戏行业本来就是互联网行业最尖端的领域,要想从事游戏开发,不仅要掌握一门过硬的语言,尤其是对C++的精通,还要对算法非常精通,深刻...
  • 答案:通过FindWindow函数获取,参数有两个,分别为窗口名和窗口所属的类名,输入一个即可,另一个可以为NULL。返回值是HWND类型。需要的头文件是#include <Windows.h>,库为user32.dll。 第二步,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,949
精华内容 85,979
关键字:

windows的窗口有哪两类