我想让单文档界面的窗口保持最大化,不能改变大小,而且不能移动。
当我如下设置时:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
cs.style&=~WS_MAXIMIZEBOX;
cs.style&=~WS_THICKFRAME;
cs.style&=~WS_MINIMIZEBOX;
return TRUE;
}
虽然能够实现最大化,但是如果我鼠标双击标题栏,窗口会还原,而且在也不能最大化。另外,如果我鼠标左键在标题栏上按下,却能够移动整个窗口。
请问:如何才能解决这些问题?

解决方案 »

  1.   

    在 cs.style&=~WS_MAXIMIZEBOX;
    cs.style&=~WS_THICKFRAME;
    cs.style&=~WS_MINIMIZEBOX;
    中把前面两句去掉,保留后面那一句
      

  2.   

    1.BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    if( !CFrameWnd::PreCreateWindow(cs) )
    return FALSE;
    cs.style&=WS_POPUPWINDOW;
    cs.cy = ::GetSystemMetrics(SM_CYSCREEN) ; 
    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) ;
    return 1;

    2.映射WM_MOVE
    void CMainFrame::OnMove(int x, int y)
    {
    MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN)));
    }
      

  3.   

    多谢楼上的,你的办法能够解决问题。
    我用了一个比较苯的方法,我把标题栏去掉了。
    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
    {
    // TODO: Add your message handler code here and/or call default
    // 1 - Read the various system metrics
    int cyCaption = ::GetSystemMetrics( SM_CYCAPTION );
    int cxFrame = ::GetSystemMetrics( SM_CXFRAME );
    int cyFrame = ::GetSystemMetrics( SM_CYFRAME );
    int cxScreen = ::GetSystemMetrics( SM_CXSCREEN );
    int cyScreen = ::GetSystemMetrics( SM_CYSCREEN );
    int cyMenu = ::GetSystemMetrics( SM_CYMENU ); lpMMI->ptMaxPosition.y = -( cyFrame + cyCaption  );
    lpMMI->ptMaxSize.y = lpMMI->ptMaxTrackSize.y =
    cyScreen + 2 * cyFrame + cyCaption ; CFrameWnd::OnGetMinMaxInfo(lpMMI);
    }
    虽然界面比较丑一点,但是什么都移动不了了,效果还不错。