2007年1月 6日 (土)

クライアント領域サイズの CMDIChildWnd

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if (!CMDIChildWnd::PreCreateWindow(cs))
        return FALSE;

    HWND hWnd = ((CMDIFrameWnd*)AfxGetMainWnd())->m_hWndMDIClient;
    CRect rc;
    ::GetClientRect(hWnd, &rc);
    // ::AdjustWindowRectEx(&rc, cs.style, FALSE, cs.dwExStyle);
    cs.x = rc.left;
    cs.y = rc.top;
    cs.cx = rc.Width();
    cs.cy = rc.Height();

    return TRUE;
}

|

2006年12月27日 (水)

MDI での GetActiveView

意外にこんなところでつまずくことがあるので、メモっておきます。

CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild = pFrame->MDIGetActive();
CMyView *pView = (CMyView*)pChild->GetActiveView();

【参考資料】
PRB: GetActiveView は、 MDI フレーム ウィンドウの NULL を返します。

|