CWnd::SetWindowPlacement 与 窗口最大化

CWnd::SetWindowPlacement 与 窗口最大化

对于MDI的MFC程序,在向导中可以设置子窗口启动时最大化,生成的代码如下:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT &  cs)
{
    
// TODO: Modify the Window class or styles here by modifying the CREATESTRUCT cs
    if!CMDIChildWnd::PreCreateWindow(cs) )
        
return FALSE;

    cs.style 
= WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
        
| FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;

    
return TRUE;
}


但是,在运行至 CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)和CYourView::OnInitialUpdate()的时候并不能得到子窗口最大时的rect大小。可以通过GetClientRect检验。
此时可以用如下代码解决:

    WINDOWPLACEMENT winplacement;
    memset(
& winplacement,  0 sizeof (winplacement));
    winplacement.length 
=   sizeof (WINDOWPLACEMENT);
    winplacement.showCmd 
=  SW_SHOWMAXIMIZED;
    SetWindowPlacement(
& winplacement);

 

MSDN:
Sets the show state and the normal (restored), minimized, and maximized positions  for  a window.

 
BOOL SetWindowPlacement(
   
const  WINDOWPLACEMENT * lpwndpl 
); 
 


Parameters
lpwndpl
Points to a WINDOWPLACEMENT structure that specifies the 
new  show state and positions.

Return Value

你可能感兴趣的:(CWnd::SetWindowPlacement 与 窗口最大化)