133 lines
3.9 KiB
C++
133 lines
3.9 KiB
C++
// MdiClient.cpp : implementation file
|
||
//
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// This class does subclass the MDI-CLIENT window.
|
||
// Subclassing means that all messages are first routed to this class, then
|
||
// to the original window (in this case the MDI-CLIENT).
|
||
// We need this to get notifications of the creation and deletion of the
|
||
// MDI child frames (contain views).
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// Copyright ?1998 Written by Dieter Fauth
|
||
// mailto:fauthd@zvw.de
|
||
//
|
||
// This code may be used in compiled form in any way you desire. This
|
||
// file may be redistributed unmodified by any means PROVIDING it is
|
||
// not sold for profit without the authors written consent, and
|
||
// providing that this notice and the authors name and all copyright
|
||
// notices remains intact. If the source code in this file is used in
|
||
// any commercial application then a statement along the lines of
|
||
// "Portions Copyright ?1999 Dieter Fauth" must be included in
|
||
// the startup banner, "About" box or printed documentation. An email
|
||
// letting me know that you are using it would be nice as well. That's
|
||
// not much to ask considering the amount of work that went into this.
|
||
//
|
||
// This file is provided "as is" with no expressed or implied warranty.
|
||
// The author accepts no liability for any damage/loss of business that
|
||
// this product may cause.
|
||
//
|
||
// ==========================================================================
|
||
// HISTORY:
|
||
// ==========================================================================
|
||
// 1.00 08 May 1999 - Initial release.
|
||
// ==========================================================================
|
||
//
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
|
||
#include "stdafx.h"
|
||
#include "TabCtrlBarDoc.h"
|
||
#include "MdiClient.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CMdiClient
|
||
|
||
CMdiClient::CMdiClient(): m_sizeClient(0, 0)
|
||
{
|
||
m_crBkColor = GetSysColor(COLOR_DESKTOP);
|
||
m_pWndTabs = NULL;
|
||
}
|
||
|
||
|
||
CMdiClient::~CMdiClient()
|
||
{
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(CMdiClient, CWnd)
|
||
//{{AFX_MSG_MAP(CMdiClient)
|
||
ON_WM_ERASEBKGND()
|
||
ON_WM_SIZE()
|
||
ON_MESSAGE(WM_MDICREATE,OnMDICreate)
|
||
ON_MESSAGE(WM_MDIDESTROY,OnMDIDestroy)
|
||
//}}AFX_MSG_MAP
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
void CMdiClient::AddHandle(HWND hWnd)
|
||
{
|
||
ASSERT(m_pWndTabs != NULL);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||
m_pWndTabs->AddHandle(hWnd);
|
||
}
|
||
|
||
void CMdiClient::RemoveHandle(HWND hWnd)
|
||
{
|
||
ASSERT(m_pWndTabs != NULL);
|
||
m_pWndTabs->RemoveHandle(hWnd);
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CMdiClient message handlers
|
||
|
||
LRESULT CMdiClient::OnMDICreate(WPARAM wParam, LPARAM lParam)
|
||
{
|
||
HWND hWnd = (HWND) DefWindowProc(WM_MDICREATE, wParam, lParam);
|
||
AddHandle(hWnd);
|
||
return (LRESULT) hWnd;
|
||
}
|
||
|
||
LRESULT CMdiClient::OnMDIDestroy(WPARAM wParam, LPARAM lParam)
|
||
{
|
||
RemoveHandle((HWND) wParam);
|
||
return DefWindowProc(WM_MDIDESTROY, wParam, lParam);
|
||
}
|
||
|
||
|
||
|
||
BOOL CMdiClient::OnEraseBkgnd(CDC* pDC)
|
||
{
|
||
return CWnd::OnEraseBkgnd(pDC);
|
||
}
|
||
void CMdiClient::OnSize(UINT nType, int cx, int cy)
|
||
{
|
||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯ʱ<E4BBAF><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
CWnd::OnSize(nType, cx, cy);
|
||
|
||
// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B1A3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD>
|
||
if ((m_sizeClient.cx == 0) && (m_sizeClient.cy == 0))
|
||
{
|
||
m_sizeClient.cx = cx;
|
||
m_sizeClient.cy = cy;
|
||
|
||
return ;
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>ڴ<EFBFBD>Сδ<D0A1><CEB4><EFBFBD><EFBFBD><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD>
|
||
if ((m_sizeClient.cx == cx) && ( m_sizeClient.cy == cy))
|
||
{
|
||
return;
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||
m_sizeClient.cx = cx;
|
||
m_sizeClient.cy = cy;
|
||
// ǿ<><C7BF><EFBFBD>ػ<EFBFBD>
|
||
RedrawWindow(NULL, NULL,
|
||
RDW_INVALIDATE | RDW_ERASE | RDW_ERASENOW | RDW_ALLCHILDREN);
|
||
|
||
return;
|
||
} |