SDI的程序很好改, 在程序的CMainFrame类中有一个函数:PreCreateWindow(CREATESTRUCT& cs)默认选项为
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_THICKFRAME | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MAXIMIZE;把 WS_MAXIMIZEBOX 去掉就可以使最大化按钮变为diaable状态。

解决方案 »

  1.   

    在PreCreateWindow中有一个CREATESTRUCT结构参数,这个参数有两个数据成员 
    style 和 dwExStyle . 你可以看看msdn 里的  Window style and extended window styles
      

  2.   

    ... 
       // Create a window without min/max buttons or sizable border 
        cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;
    ...如果想不让别人用鼠标托动来改变窗口大小的话,应该截获主窗口消息WM_NCHITTEST在其响应函数中判断CWnd::OnNcHitTest()的返回值是否为HTRIGHT,HTLEFT,HTTOP,HTBOTTOM四个值之一,如果是,说明用户此时已点击了四个边框之一,此时我们应该返回HTCLIENT.那么,鼠标的形状就不会变成水平或垂直的双向箭头,用户就不可能依靠拖动边框来改变窗口大小了。