初始化时对话框是有非客户区的,当满足某一个条件的时候,怎样把非客户区去掉????谢谢!!

解决方案 »

  1.   

    我是想能不能动态的改变对话框的属性即把对话框的Border属性由Resizing改为Nono
      

  2.   

    试试:
    DWORD oldstyle=GetWindowLong();
    DWORD newStyle=WS_XXXX;设置你需要的样式
    SetWindowLong(olstyle|newstyle);
      

  3.   

    处理WM_NCCALCSIZE消息void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
    {
       if( bCalcValidRects )
       {
          int nCYCaption = GetSystemMetrics(SM_CYCAPTION);
          lpncsp->rgrc[0].top -= nCYCaption;
       }
       else
       {
          CDialog::OnNcCalcSize(bCalcValidRects, lpncsp);
       }
    }
      

  4.   

    或是,这个方法一定成功:
    GetClientRect(CRect *rc);
    GetWindowRect(CRect *rc);
    SetWindowRgn(CRgn *rgn);
      

  5.   

    为了方便你可以干脆修改窗口样式DWORD dwStyle = GetWindowLong(m_hWnd, GWL_STYLE);dwStyle &= ~WS_CAPTION;SetWindowLong(m_hWnd, GWL_STYLE, dwStyle);
      

  6.   

    大家的方法都很好,谢谢!
    把标题栏去掉以后,窗体还是有客户区与非客户区(上、下、左、右边分别有3个像素)之分,我是想能不能动态的改变对话框把对的属性即话框的Border属性由Resizing改为Nono,这样就能得到我想的效果了。
      

  7.   

    我做了一下实验SetWindowRgn好像只对对话框的Boder属性为Nono时有效,能不能用SetWindowRgn写一点代码示范一下,谢谢