本文共 1189 字,大约阅读时间需要 3 分钟。
函数原型:
BOOL CWnd::SetWindowPos
( const CWnd* pWndInsertAfter, //插入的地方 int x, //水平坐标 int y, //垂直坐标 int cx, //宽 int cy, //高 UINT nFlags //窗口定位标识 );说明:
这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。
返回值:返回值BOOL类型,如果返回值非零表示成功,返回零表示失败。
参数表:
参数类型及说明
hWndInsertAfter HWND,置于hwnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一:wndBottom 将窗口置于其它所有窗口的底部
wndTop 将窗口置于它所有窗口的顶部 wndTopMost 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态 wndNoTopMost 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响x: int,指定窗口新的X坐标
Y: int,指定窗口新的Y坐标
cx: int,指定窗口新的宽度
cy: int,指定窗口新的高度
nFlags: UINT,指定窗口状态和位置的标记。
如下将窗口置顶,并且不改变窗口的位置与大小
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);相关函数:
MoveWindow,SetActiveWindow,SetForegroundWindow
以下例子通过MoveWindow()来达到窗口展开与折叠效果:
void CMainDlg::OnButton_more()
{ CRect cur_rect; int x, y; int cx, cy;if(m_moreIsActive)
{ GetWindowRect(&cur_rect); x = cur_rect.left; y = cur_rect.top; cx = cur_rect.Width(); cy = cur_rect.Height()*2; MoveWindow(x, y, cx, cy); m_moreIsActive = false; } else { GetWindowRect(&cur_rect); x = cur_rect.left; y = cur_rect.top; cx = cur_rect.Width(); cy = cur_rect.Height()/2; MoveWindow(x, y, cx, cy); m_moreIsActive = true; } }转载地址:http://knmws.baihongyu.com/