MFC SetWindowPos
函數原型:
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;
?}?
}
總結
以上是生活随笔為你收集整理的MFC SetWindowPos的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC绘制动态曲线,用双缓冲绘图技术防闪
- 下一篇: GCC使用详情