1. 伯乐范文网 > 知识库 >

setwindowpos,MFC编程中SetWindowPos函数怎么用

本文目录索引

1,MFC编程中SetWindowPos函数怎么用

......);//////////////////////////////////////pWndInsertAfter Identifies the CWnd object that will precede this CWnd object in the Z-order. This parameter can be a pointer to a CWnd or a Pointer to one of the following values: wndBottom Places the window at the bottom of the Z-order. If this CWnd is a topmost window, the window loses its topmost status; the system places the window at the bottom of all other windows. wndTop Places the window at the top of the Z-order. wndTopMost Places the window above all nontopmost windows. The window maintains its topmost position even when it is deactivated. wndNoTopMost Repositions the window to the top of all nontopmost windows, that is, behind all topmost windows. This flag has no effect if the window is already a nontopmost window.另外,虚机团上产品团购,超级便宜

MFC编程中SetWindowPos函数怎么用

2,vb SetWindowPos函数的用法

wFlags 可以是下面一个值或几个数值的和
&H1 不改变大小
&H2 不改变位置
&H4 不改变Z序列(忽略 hWndInsertAfter 参数)
&H10 不激活窗体
&H40 显示窗体
&H80 隐藏窗体


SetWindowPos WindowHandle, HWND_TOPMOST, 0, 0, 0, 0, &H2 or &h4 or &H10 or &H40

SetWindowPos WindowHandle, HWND_TOPMOST, 0, 0, 0, 0, &H2 or &h4 or &H10 or &H80

3,VB中Setwindowpos怎么用,最好例子加解说,谢谢

Private Declare Function SetWindowPos Lib "user32" (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
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOMOVE=&H2
Const SWP_NOSIZE=&H1
**************************************************
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, &H1 Or &H2
SetWindowPos Me.hwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE

End Sub

4,怎么使setwindowpos函数

SetWindowPos函数详解 WinAPI: SetWindowPos - 改变窗口的位置与状态 SetWindowPos( hWnd: HWND; {窗口句柄} hWndInsertAfter: HWND; {窗口的 Z 顺序} X, Y: Integer; {位置} cx, cy: Integer; {大小} uFlags: UINT {选项} ): BOOL; //hWndInsertAfter 参数可选值: HWND_TOP = 0; {在前面} HWND_BOTTOM = 1; {在后面} HWND_TOPMOST = HWND(-1); {在前面, 位于任何顶部窗口的前面} HWND_NOTOPMOST = HWND(-2); {在前面, 位于其他顶部窗口的后面} //uFlags 参数可选值: SWP_NOSIZE = 1; {忽略 cx、cy, 保持大小} SWP_NOMOVE = 2; {忽略 X、Y, 不改变位置} SWP_NOZORDER = 4; {忽略 hWndInsertAfter, 保持 Z 顺序} SWP_NOREDRAW = 8; {不重绘} SWP_NOACTIVATE = $10; {不激活} SWP_FRAMECHANGED = $20; {强制发送 WM_NCCALCSIZE 消息, 一般只是在改变大小时才发送此消息} SWP_SHOWWINDOW = $40; {显示窗口} SWP_HIDEWINDOW = $80; {隐藏窗口} -------------------------------------------------------------------------------------- SetWindowPos() 函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。 函数原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Flags); 参数: hWnd:窗口句柄。 hWndlnsertAfter:在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或下列值之一: HWND_BOTTOM:将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。 HWND_DOTTOPMOST:将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用。 HWND_TOP:将窗口置于Z序的顶部。 HWND_TOPMOST:将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。 查看该参数的使用方法,请看说明部分。 x:以客户坐标指定窗口新位置的左边界。 Y:以客户坐标指定窗口新位置的顶边界。 cx:以像素指定窗口的新的宽度。 cy:以像素指定窗口的新的高度。 uFlags:窗口尺寸和定位的标志。该参数可以是下列值的组合: SWP_ASNCWINDOWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求。这就防止调用线程在其他线程处理需求的时候发生死锁。 SWP_DEFERERASE:防止产生WM_SYNCPAINT消息。 SWP_DRAWFRAME:在窗口周围画一个边框(定义在窗口类描述中)。 SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。 SWP_HIDEWINDOW;隐藏窗口。 SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndlnsertAfter设置)。 SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。 SWP_NOMOVE:维持当前位置(忽略X和Y参数)。 SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。 SWP_NOREDRAW: 不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区(包括标题栏和滚动条)和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。 SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。 SWP_NOSENDCHANG

5,在 VB.NET 中 SetWindowPos 应如何使用?

因为数据类型的不同,VB.NET调用系统API函数和VB6不太一样,VB6是这样: Public Declare Function SetWindowPos Lib "user32" (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在VB.NET中是这样调用: _Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As SetWindowPosFlags) As BooleanEnd Function参考:http://www.pinvoke.net/default.aspx/user32/SetWindowPos.html

6,MoveWindow和setwindowpos的区别

两者都能实现移动和改变窗口大小。
  MoveWindow()功能比较单一,只能移动和改变窗口大小,而SetWindowPos()可以设置更多的参数,实现Zorder及显示方式标志。
  MoveWindow()发送WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE等消息到窗口,SetWindowPos()只发送WM_WINDOWPOSCHANGED消息到窗口。所以说如果需要发送更多消息时还是使用MoveWindow()的好。

7,易语言 API setwindowpos 的所有参数请详解!

.版本 2
.子程序 __启动窗口_创建完毕
SetWindowPos (取窗口句柄 (), 0, 300, 300, 800, 600, 0)

' hWndlnsertAfter 值,即楼主所说的-1

' 1 HWND_BOTTOM:将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。
' -2 HWND_NOTOPMOST:将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用。
' 0 HWND_TOP:将窗口置于Z序的顶部。
' -1 HWND_TOPMOST:将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。


' ===============================
' uFlags 值,即楼主所说的3

' 16384 SWP_ASYNCWINDOWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求。这就防止调用线程在其他线程处理需求的时候发生死锁。
' 8192 SWP_DEFERERASE:防止产生WM_SYNCPAINT消息。
' 32   SWP_DRAWFRAME:在窗口周围画一个边框(定义在窗口类描述中)。
' 32   SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。
' 128    SWP_HIDEWINDOW;隐藏窗口。
' 16   SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndlnsertAfter设置)。
' 256   SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。
' 2    SWP_NOMOVE:维持当前位置(忽略X和Y参数)。
' 512    SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。
' 8   SWP_NOREDRAW:不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区(包括标题栏和滚动条)和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。
' 512    SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。
' 1024   SWP_NOSENDCHANGING:防止窗口接收WM_WINDOWPOSCHANGING消息。
' 1   SWP_NOSIZE:维持当前尺寸(忽略cx和Cy参数)。
' 4   SWP_NOZORDER:维持当前Z序(忽略hWndlnsertAfter参数)。
' 64   SWP_SHOWWINDOW:显示窗口。


' 返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。

.版本 2
.DLL命令 SetWindowPos, , , "SetWindowPos"
.参数 hWnd, 整数型, , 窗口句柄
.参数 hWndlnsertAfter, 整数型, , 在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或指定值
.参数 x, 整数型, , 左边
.参数 y, 整数型, , 顶边
.参数 cx, 整数型, , 宽度
.参数 cy, 整数型, , 高度
.参数 uFlags, 整数型, , 窗口尺寸和定位的标志

8,SetWindowPos各种参数是什么意思?

HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识
hwnd HWND,欲定位的窗口句柄
hWndInsertAfter HWND,置于hwnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一: HWND_BOTTOM 将窗口置于其它所有窗口的底部
HWND_NOTOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响
HWND_TOP 将窗口置于它所有窗口的顶部
HWND_TOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态

x:

int,指定窗口新的X坐标

Y:

int,指定窗口新的Y坐标

cx:

int,指定窗口新的宽度

cy:

int,指定窗口新的高度

wFlags:

UINT,指定窗口状态和位置的标记。这个参数使用下面值的组合: SWP_DRAWFRAME 围绕窗口画一个框
SWP_FRAMECHANGED 发送一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有发生改变。如果不指定这个参数,消息WM_NCCALCSIZE只有在窗口大小发生改变时才发送
SWP_HIDEWINDOW 隐藏窗口
SWP_NOACTIVATE 不激活窗口
SWP_NOCOPYBITS 屏蔽客户区域
SWP_NOMOVE 保持当前位置(X和Y参数将被忽略)
SWP_NOOWNERZORDER 不改变所有窗口的位置和排列顺序
SWP_NOREDRAW 窗口不自动重画
SWP_NOREPOSITION 与SWP_NOOWNERZORDER标记相同
SWP_NOSENDCHANGING 防止这个窗口接受WM_WINDOWPOSCHANGING消息
SWP_NOSIZE 保持当前大小(cx和cy会被忽略)
SWP_NOZORDER 保持窗口在列表的当前位置(hWndInsertAfter将被忽略)
SWP_SHOWWINDOW 显示窗口


备注:

如果设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW标记,这个窗口不发生移动或改变大小。窗口成为最顶级窗口后,它的所有子窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有子窗口也会转为非最顶级。