WINAPI SETWINDOWPOS - 改变窗口的位置与状态

合集下载

如何实现控件随对话框大小变化而自动调整大小和位置

如何实现控件随对话框大小变化而自动调整大小和位置

如何实现控件随对话框大小变化而自动调整大小和位置VC++ 2009-12-28 20:27:42 阅读461 评论0字号:大中小订阅1. 处理对话框的WM_SIZE,然后用MoveWindow或者SetWindowPos来把对话框上面的控件重新调整新位置和大小。

2. 基本的做法就是响应WM_SIZE消息,并按照窗口大小比例来调整控件的位置和大小,控件的大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了。

3. 每次OnSize 即可获得一个CRect,然后根据这个CRect来确定这些控件的位置和大小,使用函数MoveWindow 或SetWindowpos实现。

4.1)通过下面两个函数获取的是显示屏幕的大小【屏幕的分辨率】(不包括任务栏等区域):int nFullWidth=GetSystemMetrics( SM_CXFULLSCREEN ); //屏幕宽度int nFullHeight=GetSystemMetrics( SM_CYFULLSCREEN ); //屏幕高度2)这两个函数获取的是真正屏幕的大小【屏幕的分辨率】(包括任务栏等区域):int cx = GetSystemMetrics( SM_CXSCREEN );int cy = GetSystemMetrics( SM_CYSCREEN );如:用前两个函数获取的大小可能是1024*687 ,而用下边两个获取的就是1024*768。

5. 在OnSize() 中调用:GetClientRect() 和GetWindowRect() 函数可获取窗口大小,但需注意得到的是设备坐标,如果需要画图什么的还需要转换成逻辑坐标。

6. 字体大小随窗口变化而自动变化,比如说始终使字的高度始终占窗口的1/3。

使用:1). 在Creat中将nHeight设成窗口长度或者宽度的一定比值就行了(最好在onsize函数中设置);2). 使用WM_FONTCHANGE 消息。

Windows API函数

Windows API函数

Windows API函数控件与消息函数CascadeWindows 以层叠方式排列窗口ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标CloseWindow 最小化指定的窗口CopyRect 矩形内容复制DeferWindowPos 该函数为特定的窗口指定一个新窗口位置DestroyWindow 清除指定的窗口以及它的所有子窗口DrawAnimatedRects 描绘一系列动态矩形EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态EnumChildWindows 为指定的父窗口枚举子窗口EnumThreadWindows 枚举与指定任务相关的窗口EnumWindows 枚举窗口列表中的所有父窗口EqualRect 判断两个矩形结构是否相同FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口FlashWindow 闪烁显示指定窗口GetActiveWindow 获得活动窗口的句柄GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息GetClassLong 取得窗口类的一个Long变量条目GetClassName 为指定的窗口取得类名GetClassWord 为窗口类取得一个整数变量GetClientRect 返回指定窗口客户区矩形的大小GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄GetFocus 获得拥有输入焦点的窗口的句柄GetForegroundWindow 获得前台窗口的句柄GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息GetParent 判断指定窗口的父窗口GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系GetWindowContextHelpId 取得与窗口关联在一起的帮助场景IDGetWindowLong 从指定窗口的结构中取得信息GetWindowPlacement 获得指定窗口的状态及位置信息GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容GetWindowTextLength 调查窗口标题文字或控件内容的长短GetWindowWord 获得指定窗口结构的信息InflateRect 增大或减小一个矩形的大小IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集InvalidateRect 屏蔽一个窗口客户区的全部或部分区域IsChild 判断一个窗口是否为另一窗口的子或隶属窗口IsIconic 判断窗口是否已最小化IsRectEmpty 判断一个矩形是否为空IsWindow 判断一个窗口句柄是否有效IsWindowEnabled 判断窗口是否处于活动状态IsWindowUnicode 判断一个窗口是否为Unicode窗口。

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。

void MoveWindow(int x,int y,int nWidth,int nHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度、高度;第二种用法给出存放位置的CRect对象;例:CWnd *pWnd;pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);第一个参数我不会用,一般设为NULL;x、y控件位置;cx、cy控件宽度和高度;nFlags常用取值:SWP_NOZORDER:忽略第一个参数;SWP_NOMOVE:忽略x、y,维持位置不变;SWP_NOSIZE:忽略cx、cy,维持大小不变;例:CWnd *pWnd;pWnd = GetDlgItem( IDC_BUTTON1 ); //获取控件指针,IDC_BUTTON1为控件ID号pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER |SWP_NOSIZE ); //把按钮移到窗口的(50,80)处pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER | SWP_NOMOVE ); //把编辑控件的大小设为(100,80),位置不变pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER ) ; //编辑控件的大小和位置都改变以上方法也适用于各种窗口。

VB窗体美化

VB窗体美化

学习窗体美化不错的知识====================================================================================相信大家看过许多形状怪异的窗口吧?可是在VB里,系统提供的只是一个矩形的窗体。

如何在VB里实现这种异形窗体呢?其实原理很简单。

首先,在内存中构建一个想要的图形,再通过API函数将窗体设置为此形状,最后将图片放上去就可以了。

关键在于如何构建这个想要的图形。

让我们看看下面这个图:。

这张图片中既有白色,也有其他彩色,而我们想要的颜色正是除白色以外的其它颜色。

我们可以这样想:在内存中创建一幅一样大小的空的图像,然后只把我们需要的颜色(即非白色)输入内存。

这样,就可以创建出我们想要的图形了。

以上是原理,接下来介绍几个API函数。

GetPixel:获取指定对象的某个点的颜色。

定义为:Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long其中hdc为图形对象的句柄,x、y为坐标。

SelectObject:向内存中的指定地点输入图形。

定义为:Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long其中hdc为内存中图形对象的句柄,hObject为欲输入的图像。

CreateCompatibleDC:在内存中创建一个与指定对象一样的场景(可以理解为图像)。

定义为:Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long其中hdc为指定对象的句柄。

LabVIEW调用WindowsAPI函数实现VI窗口置顶

LabVIEW调用WindowsAPI函数实现VI窗口置顶

LabVIEW调用Windows API实现VI窗口置顶前些天同事用LabVIEW开发了个常用的小工具软件,碍于电脑屏幕太小,想让这小工具一直保持在所有窗口的最顶端(置顶),几个人讨论研究发现通过LabVIEW的属性节点只能实现VI程序在LabVIEW软件中保持最前,而在其他窗口没能置顶,未能达到想要的效果。

通过上网查找资料,软件置顶是与操作平台的控制相关,需要调用Windows API去实现这功能,研究了一下,调用Windows API能很好的实现了VI置顶。

百度上用LabVIEW调用Windows API的教程LabVIEW版本比较旧,为方便大家更好的学习,现将自己研究的方法分享出来。

一.什么是Windows APIWindows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为Application Programming Interface,简称API 函数。

WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。

Windows API包括几千个可调用的函数,它们大致可分为以下几类:基本服务、组件服务、用户界面服务、图形多媒体服务、消息和协作、网络、Web服务。

二.Windows API的发展现状当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。

而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。

所以可以认为API 函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。

用Windows API取得窗体句柄二例

用Windows API取得窗体句柄二例

用Windows API取得窗体句柄二例文/胡克Windows通过句柄(Handle)识别每个窗体、控件、菜单和菜单项,当程序运行时,它所包含的每个部件都有一个惟一确定的句柄同其他的部件相区别句柄在Windows API中具有举足轻重的作用,现举三例,有兴趣的读者不妨一试。

获取窗体和控件的句柄步骤如下:1、为了看到显示于屏幕上所有的窗体和控件的句柄,用SetWindowPos函数设置窗口始终在最上面,其他窗口不能覆盖它,并使其只以标题显示于屏幕左上角。

(1)新建一工程,打开API Viwer:Add-ins→API Viewer→File→Load text file→Win32api.txt。

(2)将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。

(3)程序启动时调用SetWindowPos函数,窗体Load事件代码如下:Private Sub Form_Load()SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, conSwpNoActivate Or conSwpShowWindow'使窗体一直置于最顶层End Sub卧龙传说提醒:当第二个参数hWndInsertAfter的值为-1时置于顶层;值为-2时不置于顶层。

2、为了找到鼠标指针的X和Y坐标,用上面同样的方法,通过API Viewer工具把获取的鼠标指针位置的API函数GetCursorPos的声明和结构类型声明粘贴到窗体的声明部分:Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPIx As Longy As Long。

Win32 API 函数大全使用详解

Win32 API 函数大全使用详解

一、窗口函数(Window)= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == =AdjustWindowRect函数功能:该函数依据所需客户矩形的大小,计算需要的窗日矩形的大小。

计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。

函数原型:BOOL AdjustWindowRect(LPRECT lpRect ,DWORD dwStyle,BOOL bMENU);参数:lpRect:指向RECT结构的指针,该结构包含所需客户区域的左上角和右下角的坐标。

函数返回时,该结构容纳所需客户区域的窗口的左上角和右下角的坐标。

dwStyle:指定将被计算尺寸的窗口的窗口风格。

bMenu:指示窗口是否有菜单。

返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。

获取错误信息,参看GetLastError。

备注:客户矩形是指完全包含一个客户区域的最小矩形;窗日矩形是指完全包含一个窗口的最小矩形,该窗口包含客户区与非客户区。

当一个菜单条下拉出两行或更多行时,AdjustWindowRect函数不增加额外的空间。

速查:Windows NT:3.1以上版本:Windows:95以上版本:Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = =AdjustWindowRectEX函数功能:该函数依据所需客户矩形大小,计算需要的窗口矩形的大小。

VBA与Windows操作系统交互的技巧与方法

VBA与Windows操作系统交互的技巧与方法

VBA与Windows操作系统交互的技巧与方法随着信息化时代的到来,计算机软件在生活和工作中扮演着越来越重要的角色。

在Windows操作系统中,VBA (Visual Basic for Applications) 是一种被广泛应用的编程语言,可以与操作系统进行高效的交互。

在本文中,我们将探讨一些VBA与Windows操作系统交互的技巧与方法,帮助读者更好地利用VBA来优化自己的工作流程。

一、获取系统信息VBA提供了一些函数来获取Windows操作系统的信息。

其中一个常用的函数是Environ,通过该函数可以获取当前用户的环境变量。

例如,使用VBA代码`Environ("UserName")` 可以获取当前登录用户的用户名。

另外,VBA还提供了一些其他的函数,比如获取计算机名称、操作系统版本、用户目录等等。

二、操作文件和文件夹VBA可以通过操作系统提供的接口来对文件和文件夹进行创建、删除、复制、重命名等操作。

例如,使用VBA的`MkDir`命令可以创建一个新的文件夹,`Kill`命令可以删除文件。

在操作文件时,VBA还可以利用Windows操作系统的剪贴板功能来实现文件的复制和粘贴,以及获取剪贴板中的内容。

通过VBA的`GetObject`函数,可以获取剪贴板中的对象,并进行进一步的操作。

三、控制应用程序VBA可以通过Windows操作系统的API来控制其他应用程序。

例如,可以使用VBA代码来自动打开、关闭、激活其他应用程序的窗口。

通过获取其他应用程序的句柄,可以实现对其进行操作,并模拟用户的操作。

四、发送和接收电子邮件在Windows操作系统中,VBA可以通过Microsoft Outlook来实现与邮件系统的交互。

通过VBA代码,可以自动创建、发送电子邮件,并读取邮件服务器中的邮件。

通过使用VBA的Outlook对象模型,可以实现对邮件的各种操作,例如添加附件、设置邮件的优先级和重要性、保存邮件为草稿等等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档