如何使得一个dialog在resizing类型下,只对左右缩放,不能上下缩放

解决方案 »

  1.   

    void CTest6Dlg::OnSizing(UINT fwSide, LPRECT pRect)
    {
      CDialog::OnSizing(fwSide, pRect);  if( fwSide == WMSZ_BOTTOM)
       ....
        pRect->bottom = ...;
       if( fwSide == WMSZ_TOP)
        .......
    }
      

  2.   

    我的方法很简单,简单描述一下:
    (1)重载CDialog::OnSetCursor(),当鼠标在上边框,下边框和四个角上时,保持鼠标原来的形状,即不变成箭头;
    (2)重载CDialog::OnNcLButtonDown(),当鼠标在上边框,下边框和四个角上时,不进行任何处理,直接返回,否则调用父类的消息处理函数,这样就行了。// 下面假设CT1Dlg是你的对话框类BOOL CT1Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    // TODO: Add your message handler code here and/or call default
        if( nHitTest == HTTOP ||
    nHitTest == HTTOPLEFT ||
    nHitTest == HTTOPRIGHT ||
    nHitTest == HTBOTTOM ||
    nHitTest == HTBOTTOMLEFT ||
    nHitTest == HTBOTTOMRIGHT )
    return TRUE ;
        else
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
    }void CT1Dlg::OnNcLButtonDown( UINT nHitTest, CPoint point )
    {
        if( nHitTest == HTTOP ||
    nHitTest == HTTOPLEFT ||
    nHitTest == HTTOPRIGHT ||
    nHitTest == HTBOTTOM ||
    nHitTest == HTBOTTOMLEFT ||
    nHitTest == HTBOTTOMRIGHT )
    return ;
        else
    CDialog::OnNcLButtonDown( nHitTest, point );
    }
      

  3.   

    支持楼上的做法。
     lixiaosan(小三)的做法好像无法改变光标会发生变化的的问题,光标移动到边框的时候还是会发生变化。既然都不能改变了,那光标也就别变了。