我建了一个单文档应用,想改变主窗口的大小,即在程序中指定大小,应在哪个类中添加什么代码?

解决方案 »

  1.   

    用这个函数来改变窗口大小:CWnd::SetWindowPos
    BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );Return ValueNonzero if the function is successful; otherwise 0.ParameterspWndInsertAfterIdentifies the CWnd object that will precede this CWnd object in the Z-order. This parameter can be a pointer to a CWnd or a Pointer to one of the following values: wndBottom   Places the window at the bottom of the Z-order. If this CWnd is a topmost window, the window loses its topmost status; the system places the window at the bottom of all other windows.
    wndTop   Places the window at the top of the Z-order.
    wndTopMost   Places the window above all nontopmost windows. The window maintains its topmost position even when it is deactivated.
    wndNoTopMost   Repositions the window to the top of all nontopmost windows (that is, behind all topmost windows). This flag has no effect if the window is already a nontopmost window.
    See the “Res” section for this function for rules about how this parameter is used.xSpecifies the new position of the left side of the window.ySpecifies the new position of the top of the window.cxSpecifies the new width of the window.cySpecifies the new height of the window.nFlagsSpecifies sizing and positioning options. This parameter can be a combination of the following: SWP_DRAWFRAME   Draws a frame (defined when the window was created) around the window. 
    SWP_FRAMECHANGED   Sends a WM_NCCALCSIZE message to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE is sent only when the window's size is being changed.
    SWP_HIDEWINDOW   Hides the window.
    SWP_NOACTIVATE   Does not activate the window. If this flag is not set, the window is activated and moved to the top of either the topmost or the nontopmost group (depending on the setting of the pWndInsertAfter parameter).
    SWP_NOCOPYBITS   Discards the entire contents of the client area. If this flag is not specified, the valid contents of the client area are saved and copied back into the client area after the window is sized or repositioned.
    SWP_NOMOVE   Retains current position (ignores the x and y parameters).
    SWP_NOOWNERZORDER   Does not change the owner window’s position in the Z-order.
    SWP_NOREDRAW   Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title and scroll bars), and any part of the parent window uncovered as a result of the moved window. When this flag is set, the application must explicitly invalidate or redraw any parts of the window and parent window that must be redrawn.
    SWP_NOREPOSITION   Same as SWP_NOOWNERZORDER. 
    SWP_NOSENDCHANGING   Prevents the window from receiving the WM_WINDOWPOSCHANGING message.
    SWP_NOSIZE   Retains current size (ignores the cx and cy parameters).
    SWP_NOZORDER   Retains current ordering (ignores pWndInsertAfter).
    SWP_SHOWWINDOW   Displays the window. 
      

  2.   

    AfxGetMainWnd() ->MoveWindow(0,0,200,200); //后面的是屏幕坐标。
      

  3.   

    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
    {
    // TODO: Add your message handler code here and/or call default
    lpMMI->ptMaxTrackSize=CPoint(677,506);
    lpMMI->ptMinTrackSize=CPoint(677,506);
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
    }//这样你的窗口始终是677 506 大小的
      

  4.   

    AfxGetMainWnd()->MoveWindow(0, 0, 300, 300);