`
473687880
  • 浏览: 535228 次
文章分类
社区版块
存档分类
最新评论

WIN32之SetWindowPos

 
阅读更多
许多软件,特别是占桌面面积不是很大的软件,通常都提供了一个常居顶端的功能(可能有的软件不是这么叫法,但作用是相同的),
它的作用是保持窗口一直在其他窗口的上面,可以省去频繁切换窗口的动作。


如果你想这么做,有一个API可以实现: SetWindowPos,声明是这样的:


Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos"
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long,
ByVal wFlags As Long) As Long


虽然参数很多,但实际用起来很简单。hwnd是窗口的句柄,x、y、cx、cy分别是窗口的x和y坐标、宽和高度。
hWndInsertAfter用来指定窗口的Z位置(或称Z顺序)。如果你经常接触3D方面的软件,你就知道Z代表深度。
这个参数接受5种值:HWND_BOTTOM、 HWND_NOTOPMOST、HWND_TOP、HWND_TOPMOST或者另一个窗口的句柄。
而wFlags用来指定附加的选项。


你可以用它改变窗口的位置和大小,而且它允许你同时改变Z位置(当然,在VB中不用API你也可以改变窗体大小和位置)。
比如让窗口退到最下面,可以这么使用:


SetWindowPos Me.hWnd, HWND_BOTTOM, 10&, 10&, 80&, 120&, 0&


想要常居顶端,只需把HWND_BOTTOM改为 HWND_TOPMOST,而HWND_NOTOPMOST则是取消常居顶端,
HWND_TOP是把窗口的Z位置改为最前。如果这个参数传递的是另一个窗口的句柄,则是把该窗口的Z 位置更改为在另一个窗口的下面。


非常简单的事情。不过如果像上面一样做,是不是单单改个Z位置也要计算窗口位置和大小?
最后一个参数又是干什么用的呢?wFlags可以让SetWindowPos忽略或执行某种行为。这里给出一部分:


SWP_DRAWFRAME和SWP_FRAMECHANGED:强制发送 WM_NCCALCSIZE消息给窗口


SWP_HIDEWINDOW:隐藏窗口


SWP_NOACTIVATE:不激活窗口


SWP_NOMOVE:保持当前位置(忽略x和y)


SWP_NOREDRAW:窗口不自动重画


SWP_NOSIZE:保持当前大小(忽略cx和cy)


SWP_NOZORDER:保持窗口在列表的当前位置(忽略hWndInsertAfter)


SWP_SHOWWINDOW:显示窗口


这些参数可以使用Or运算组合,所以如果你不希望改变窗口位置和大小,
你只需要给最后一个参数传递(SWP_NOMOVE Or SWP_NOSIZE)即可。如下:


SetWindowPos Me.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE


这里的x、y、cx、cy的值将被忽略。其他值的组合,你可以自己去试试。
分享到:
评论

相关推荐

    新编WIN32API大全(中文)

    《新编WIN32API大全(中文)》是一本深入探讨Windows操作系统编程接口的重要书籍,主要针对C++和VC++开发者。这本书详细介绍了Win32 API的各个方面,为开发高效、稳定的Windows应用程序提供了坚实的基础。 在第一章...

    WIN32API功能150个(屏幕篇).rar

    WIN32API,全称Windows 32位应用程序接口,是微软Windows操作系统提供的一套用于开发Windows应用程序的函数库。这个“WIN32API功能150个(屏幕篇).rar”压缩包很可能是包含了一系列关于如何利用WIN32API进行屏幕操作...

    win32API 函数库

    Win32 API函数库是Windows操作系统提供的一组接口,它允许程序员直接与操作系统进行交互,进行底层系统级的开发。这个库特别适用于Windows下32位编程,为开发者提供了丰富的功能,包括窗口管理、图形绘制、文件操作...

    隐藏标题栏和边框 win32 C

    本文将详细介绍如何通过Win32 API来实现隐藏窗口的标题栏和边框。 ### 一、Win32 API基础 #### 1.1 窗口风格 在Windows系统中,每个窗口都有一个特定的样式,这些样式决定了窗口的行为和外观。例如,`WS_...

    Win32api设置窗口全屏的方法.docx

    Win32api 设置窗口全屏的方法 Win32api 是 Windows 操作系统中的一个应用程序接口(API),它提供了大量的函数和结构体,用于开发 Windows 应用程序。其中,设置窗口全屏是一个常见的需求,本文将介绍使用 Win32api...

    博客-win32 工具提示ToolTip控件的使用

    在Win32 API中,我们可以利用`ToolTip`控件来创建这些动态显示文本的窗口。这篇博客将深入探讨如何在Win32应用程序中实现和使用`ToolTip`控件。 首先,我们需要了解`ToolTip`的基本概念。`ToolTip`控件是一个小型的...

    Win32 API大全

    Win32 API(Application Programming Interface)是微软Windows操作系统的核心组件,为开发者提供了丰富的函数和接口,使得程序员可以创建原生的Windows应用程序。这个API集包括了窗口管理、图形设备接口(GDI)、...

    win32API常用函数大全

    "win32API常用函数大全"文档涵盖了这些关键接口,为程序员提供了一个宝贵的参考资料。本文将深入探讨一些重要的win32API函数,并分析它们在实际编程中的应用。 1. **CreateProcess**: 这个函数用于创建新的进程和其...

    Win32写的磁性窗体

    在Windows编程领域,Win32 API(应用程序接口)是一个至关重要的工具集,它允许开发者创建原生的Windows应用程序。本文将深入探讨“Win32写的磁性窗体”这一概念,以及如何实现窗体吸附效果,类似于千千静听音乐...

    API C_调用Win32_的API函数

    在C#编程中,有时我们需要调用Windows操作系统提供的低级别功能,这时就需要使用Win32 API函数。这些函数是用C语言编写的,通常在Windows系统库如kernel32.dll、user32.dll等中定义。C#本身不直接支持这些函数,但...

    扩大和缩小窗口的win32程序

    标题 "扩大和缩小窗口的win32程序" 描述了一个基于Windows API(应用程序接口)的编程实践,特别关注于如何动态调整窗口的尺寸。在Windows操作系统中,Win32 API是一组供开发者使用的函数,用于创建、管理和操作窗口...

    win32 API 帮助文件

    Win32 API(Application Programming Interface)是微软Windows操作系统的核心接口,为开发者提供了访问操作系统功能的途径。这个“win32 API 帮助文件”很可能包含了大量的HTML文档,用于详细介绍这些API函数、...

    新编Win32API大全.rar_API_API大全_Win32 API_Win32API

    《新编Win32API大全》是一份针对Delphi编程者深入学习Win32 API的重要参考资料。Win32 API(Application Programming Interface)是Microsoft Windows操作系统提供的一系列函数和过程,用于帮助开发者创建底层系统...

    Win32_API vb6.0api的最爱

    《深入探索Win32_API与VB6.0的紧密结合》 在编程领域,尤其是Windows平台下的开发,Win32_API(Application Programming Interface)扮演着至关重要的角色。它是一组由微软提供的函数库,包含了用于创建、管理和...

    Delphi Win32核心API参考

    《Delphi Win32核心API参考》是一本深入探讨Delphi编程中Win32 API使用的专业参考资料,尤其适合那些希望深入了解Windows系统底层机制并利用这些知识进行高效开发的程序员。Delphi作为流行的 Pascal 编程语言环境,...

    Delphi Win32核心API参考(PDF+光盘代码)

    《Delphi Win32核心API参考》是一本深入探讨Delphi编程中Win32核心API应用的专业书籍。这本书结合了理论与实践,旨在帮助开发者更好地理解和利用Delphi语言的Win32 API,从而实现更高效、更底层的操作系统交互。 在...

    win32完成画图小程序

    【win32完成画图小程序】是一个基于Windows API(Win32 API)开发的简易图形绘制应用程序。这个程序提供了一系列基本的绘画工具,使用户能够进行简单的图形创作。以下是该程序涉及的关键技术点: 1. **Windows消息...

    Win32开发人员参考库 第4卷 Windows通用控件

    《Win32开发人员参考库 第4卷 Windows通用控件》是针对Win32 API进行深入探讨的重要资源,尤其专注于Windows通用控件的使用。通用控件是Windows应用程序开发中的核心组成部分,它们提供了用户界面的基本元素,如按钮...

    纯win32创建rebar然后加入toolbar和status

    在Windows编程中,纯Win32 API是一种不依赖任何第三方库,如MFC或ATL,而是直接调用操作系统提供的Windows API函数来构建应用程序的方法。本主题将详细讲解如何使用纯Win32 API来创建一个包含rebar、toolbar和status...

    WIN32编程帮助文件(API大全)

    《WIN32编程帮助文件(API大全)》是C++编程者的重要参考资料,它涵盖了大量Windows API函数,这些函数是开发Windows操作系统下应用程序的基础。Windows API是微软为开发者提供的接口,使得程序员能够利用Windows...

Global site tag (gtag.js) - Google Analytics