现在的位置: 首页 > 综合 > 正文

限制窗口只能在一个方向上移动或改变尺寸

2013年02月19日 ⁄ 综合 ⁄ 共 703字 ⁄ 字号 评论关闭
不论是WM_SIZING或WM_MOVING,它们的lParam参数都是一个指向RECT结构的
对象的指针,该对象中装有窗口改变尺寸或位置后的左上角和右下角坐标。注意
此时窗口实际上还没有改变到这个位置,所以可以通过改变这个RECT结构的对象
的成员值来限制窗口尺寸和位置的变化方向。
    在mfc里,就是在OnSizing和OnMoving函数里来做这个工作。这两个函数的p
Rect参数就是消息里的(RECT*)lParam。

void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) 
{
    CFrameWnd::OnSizing(fwSide, pRect);

    //限制窗口只能改变右边的尺寸
    RECT rect;
    GetWindowRect(&rect);
    pRect->left=rect.left;
    pRect->bottom=rect.bottom;
    pRect->top=rect.top;
}

void CMainFrame::OnMoving(UINT fwSide, LPRECT pRect) 
{
    CFrameWnd::OnMoving(fwSide, pRect);

    //限制窗口只能上下移动
    RECT rect;
    GetWindowRect(&rect);
    pRect->left=rect.left;
    pRect->right=rect.right;
}

抱歉!评论已关闭.