解决方案 »

  1.   

    截获WM_NCHITTEST消息,处理函数中先调用DefWindowProc, 然后判断返回值,如果是HTBORDER,HTTOP, HTLEFT, HTRIGHT, HTBOTTOM, HTTOPLEFT, HTTOPRIGHT, HTBOTTOMLEFT, HTBOTTOMRIGHT, HTSIZE中的一个的话返回HTNOWHERE或HTERROR。
      

  2.   

    case WM_NCHITTEST://
    hit=DefWindowProc(hwnd,message,wParam,lParam); 
    if((hit==HTBOTTOM) || (hit==HTBOTTOMLEFT) || (hit==HTBOTTOMRIGHT) ||
    (hit==HTTOP) || (hit==HTTOPLEFT) || (hit==HTTOPRIGHT) ||
    (hit==HTLEFT) || (hit==HTRIGHT) || (hit==HTSIZE))
    hit=HTNOWHERE;
    return hit;
      

  3.   

    去掉WS_SIZEBOX属性一定是可以的
    但问题是处理的时机
    这个问题曾经我也研究过
    你试试在窗口完全就绪之后通过按钮或菜单去掉WS_SIZEBOX属性
    应该一定可以实现
    MFC的文档视图结构在PreCreateWindow之后还有对窗口的设置
    某些操作将WS_SIZEBOX又设置回去了
      

  4.   

    没用过DefWindowProc 啊,怎么调用啊
      

  5.   

    如果是MFC程序 用不到 DefWindowProc
      

  6.   

     既然是MFC程序, 直接在窗口资源中去掉WS_SIZEBOX属性, 你说你代码中加了去掉仍然可以改变, 那么请使用SPY++查看窗口属性, 是否真的去掉了那些属性.前面几楼说的WM_NCHITTEST 的方法也是确实可行的.
      

  7.   

    直接设置对话框的大小:CRect temprect(0,0,539,420);   
    CWnd::SetWindowPos(NULL,0,0,temprect.Width(),temprect.Height(),SWP_NOZORDER|SWP_NOMOVE);