精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>WINDOWS界面设计>>限制窗口只能在一个方向上移动或改变尺寸

主题:限制窗口只能在一个方向上移动或改变尺寸
发信人: girlrong()
整理人: wenbobo(2002-12-06 23:21:11), 站内信件

    不论是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;
}

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.244.1]

[关闭][返回]