VC++学习笔记对对话框窗体大小的修改
2010-01-29 22:27
253 查看
SetWindowPos 详解
函数名:
SetWindowPos
头文件:
winuser.h
函数原型:
BOOL SetWindowPos
(
HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识
);
说明:
这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。
返回值:
BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。
参数表:
参数 类型及说明
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标记,这个窗口不发生移动或改变大小。窗口成为最顶级窗口后,它的所有子窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有子窗口也会转为非最顶级。
相关函数:
MoveWindow,SetActiveWindow,SetForegroundWindow
例子:
//设置顶层窗口
SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
//取消顶层窗口
SetWindowPos( Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
函数名:
SetWindowPos
头文件:
winuser.h
函数原型:
BOOL SetWindowPos
(
HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识
);
说明:
这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。
返回值:
BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。
参数表:
参数 类型及说明
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标记,这个窗口不发生移动或改变大小。窗口成为最顶级窗口后,它的所有子窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有子窗口也会转为非最顶级。
相关函数:
MoveWindow,SetActiveWindow,SetForegroundWindow
例子:
//设置顶层窗口
SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
//取消顶层窗口
SetWindowPos( Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
void CTestDlgDlg::OnOK() { // TODO: Add extra validation here static CRect rectLarge; static CRect rectSmall; CString str; if(GetDlgItemText(IDOK,str),str=="收缩<<") { SetDlgItemText(IDOK,"扩展>>"); } else { SetDlgItemText(IDOK,"收缩<<"); } if (rectLarge.IsRectNull()) { CRect rectSeparator; GetWindowRect(&rectLarge); GetDlgItem(IDC_SEPARRATOR)->GetWindowRect(&rectSeparator); rectSmall.left =rectLarge.left; rectSmall.top =rectLarge.top; rectSmall.right=rectLarge.right; rectSmall.bottom=rectSeparator.bottom; } if (str=="收缩<<") { SetWindowPos(NULL,0,0,rectLarge.Width(),rectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER); } else { SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER); } // CDialog::OnOK(); }
相关文章推荐
- winform继承窗体,无法修改父窗体控件,添加控件也无法修改大小
- C#.NET常见问题(FAQ)-如何修改Form不能修改窗体大小
- 修改窗体非客户区大小更改窗体标题栏高度
- 控件随对话框窗体大小而变化
- winform中怎么动态修改窗体的大小
- winform中怎么动态修改窗体的大小
- Qt中窗体最大最小化以及窗口大小修改的相关函数使用(2)
- 2014-05-13MFC对话框:改变MFC中按钮的文字,更改窗体的大小,通过类名能够查找到该类对应的对话框,MFC中获取文本框中的内容,updatedata函数,两种对话框比较,oncreate起点
- C#如何设置窗体不能修改大小
- 修改窗体非客户区大小更改窗体标题栏高度
- VC++学习笔记1--------------模式对话框中“static text”控件的字体大小改变
- 让对话框内的控件在窗体大小发生变化时随之变化
- 修改窗体非客户区大小更改窗体标题栏高度
- 修改对话框字体及其大小
- Qt Designer 修改窗体大小改变控件位置
- C#.NET常见问题(FAQ)-如何修改Form不能修改窗体大小
- winform中怎么动态修改窗体的大小
- 修改VC6对话框资源字体及大小(不修改源码)
- 通过文本修改对话框大小
- C# 如何修改Form不能修改窗体大小