// MFPlugIn.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "ViewManager.h"
#include "WindowManager.h"
#include "MFPlugIn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMFPlugIn
CMFPlugIn plugIn(false) ;
IMPLEMENT_DYNCREATE(CMFPlugIn, CPlugInMap)
CMFPlugIn::CMFPlugIn()
{
}
CMFPlugIn::CMFPlugIn(bool special)
{
AddObject() ;
}
CMFPlugIn::~CMFPlugIn()
{
}
BEGIN_MESSAGE_MAP(CMFPlugIn, CPlugInMap)
//{{AFX_MSG_MAP(CMFPlugIn)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_MESSAGE(WM_MDIREFRESHMENU, OnRefreshMenu)
ON_MESSAGE(WM_MDISETMENU, OnSetMenu)
ON_WM_ERASEBKGND()
ON_WM_SIZE()
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_WINDOW_MANAGE, OnWindowManage)
ON_COMMAND(ID_WINDOW_NEXT, OnWindowNext)
ON_COMMAND(ID_WINDOW_PREVIOUS, OnWindowPrevious)
ON_COMMAND(ID_WINDOW_SAVE_ALL, OnWindowSaveAll)
ON_COMMAND(ID_WINDOW_CLOSE_ALL, OnWindowCloseAll)
ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullscreen)
ON_UPDATE_COMMAND_UI(ID_VIEW_FULLSCREEN, OnUpdateViewFullscreen)
ON_COMMAND(ID_VIEW_VIEWTAB, OnTabView)
ON_UPDATE_COMMAND_UI(ID_VIEW_VIEWTAB, OnUpdateTabView)
ON_UPDATE_COMMAND_UI(ID_WINDOW_MANAGE, OnUpdateWindowManage)
ON_MESSAGE(WM_MDICREATE, OnMDICreate)
ON_MESSAGE(WM_MDIDESTROY, OnMDIDestroy)
ON_WM_DESTROY()
ON_UPDATE_COMMAND_UI(ID_WINDOW_NEXT, OnUpdateWindowManage) // Just cheating!!!
ON_UPDATE_COMMAND_UI(ID_WINDOW_PREVIOUS, OnUpdateWindowManage)
ON_UPDATE_COMMAND_UI(ID_WINDOW_SAVE_ALL, OnUpdateWindowManage)
ON_UPDATE_COMMAND_UI(ID_WINDOW_CLOSE_ALL, OnUpdateWindowManage)
ON_UPDATE_COMMAND_UI(ID_VIEW_VIEWOPENDOCUMENTSTABBAR, OnUpdateViewTabBar)
ON_COMMAND(ID_VIEW_VIEWOPENDOCUMENTSTABBAR, OnViewTabBar)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMFPlugIn message handlers
bool CMFPlugIn::IsPlugInFor(CRuntimeClass *pClass)
{
return (_tcscmp(pClass->m_lpszClassName, "CMainFrame") == 0);
}
CPlugInMap* CMFPlugIn::CreateMapObject()
{
return new CMFPlugIn ;
}
int CMFPlugIn::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (IsPreCall()) // wait for the window to be created, which is in the post option
return 0 ;
CPIMainFrame *pMF = static_cast<CPIMainFrame*>(m_pPlugInFor) ;
ASSERT(pMF) ;
// Install the tab view here
VERIFY(m_MDIClient.SubclassMDIClient(pMF, &m_wndViewManager));
// Set the background bitmap
if (m_MDIClient.GetFileName().IsEmpty() && m_MDIClient.GetBkBitmapState())
{
COLORMAP clrMap[] =
{
RGB(192, 192, 192),
::GetSysColor(COLOR_APPWORKSPACE),
RGB(255, 255, 255),
::GetSysColor(COLOR_3DHIGHLIGHT),
RGB(0, 0, 0),
::GetSysColor(COLOR_3DSHADOW)
};
m_MDIClient.SetBitmap(IDB_LOGO, (COLORMAP*)&clrMap, 2);
}
return 0;
}
void CMFPlugIn::OnClose()
{
if (IsPreCall())
m_MDIClient.SaveMainFrameState();
}
void CMFPlugIn::OnTabView()
{
if (IsPreCall())
m_MDIClient.OnTabView() ;
}
void CMFPlugIn::OnUpdateTabView(CCmdUI* pCmdUI)
{
if (IsPreCall())
m_MDIClient.OnUpdateTabView(pCmdUI) ;
}
LRESULT CMFPlugIn::OnSetMenu(WPARAM wParam, LPARAM lParam)
{
if (IsPreCall())
return m_MDIClient.OnSetMenu(wParam, lParam) ;
else
return 0 ;
}
LRESULT CMFPlugIn::OnRefreshMenu(WPARAM wParam, LPARAM lParam)
{
if (IsPreCall())
return m_MDIClient.OnRefreshMenu(wParam, lParam) ;
else
return 0 ;
}
void CMFPlugIn::OnWindowManage()
{
if (IsPreCall())
m_MDIClient.OnWindowManage() ;
}
void CMFPlugIn::OnUpdateWindowManage(CCmdUI* pCmdUI)
{
if (IsPreCall())
m_MDIClient.OnUpdateWindowManage(pCmdUI) ;
}
BOOL CMFPlugIn::OnEraseBkgnd(CDC* pDC)
{
if (IsPreCall())
return m_MDIClient.OnEraseBkgnd(pDC) ;
else
return 0 ;
}
void CMFPlugIn::OnSize(UINT nType, int cx, int cy)
{
if (IsPreCall())
m_MDIClient.OnSize(nType, cx, cy) ;
}
void CMFPlugIn::OnRButtonDown(UINT nFlags, CPoint point)
{
if (IsPreCall())
m_MDIClient.OnRButtonDown(nFlags, point) ;
}
LRESULT CMFPlugIn::OnMDICreate(WPARAM wParam, LPARAM lParam)
{
if (IsPreCall())
return m_MDIClient.OnMDICreate(wParam, lParam) ;
else
return 0 ;
}
LRESULT CMFPlugIn::OnMDIDestroy(WPARAM wParam, LPARAM lParam)
{
if (IsPreCall())
return m_MDIClient.OnMDIDestroy(wParam, lParam) ;
else
return 0 ;
}
void CMFPlugIn::OnWindowNext()
{
if (IsPreCall())
m_MDIClient.OnWindowNext() ;
}
void CMFPlugIn::OnWindowPrevious()
{
if (IsPreCall())
m_MDIClient.OnWindowPrevious() ;
}
void CMFPlugIn::OnWindowSaveAll()
{
if (IsPreCall())
m_MDIClient.OnWindowSaveAll() ;
}
void CMFPlugIn::OnWindowCloseAll()
{
if (IsPreCall())
m_MDIClient.OnWindowCloseAll() ;
}
void CMFPlugIn::OnViewFullscreen()
{
if (IsPreCall())
m_MDIClient.OnViewFullscreen() ;
}
void CMFPlugIn::OnUpdateViewFullscreen(CCmdUI* pCmdUI)
{
if (IsPreCall())
m_MDIClient.OnUpdateViewFullscreen(pCmdUI) ;
}
void CMFPlugIn::OnDestroy()
{
if (IsPreCall())
m_MDIClient.OnDestroy() ;
}
void CMFPlugIn::OnUpdateViewTabBar(CCmdUI* pCmdUI)
{
if (IsPreCall())
{
// put a check by the toolbar if its visible
pCmdUI->SetCheck((m_wndViewManager.GetStyle() & WS_VISIBLE) != 0) ;
}
}
void CMFPlugIn::OnViewTabBar()
{
if (IsPreCall())
{
CPIMainFrame *pMF = static_cast<CPIMainFrame*>(m_pPlugInFor) ;
ASSERT(pMF) ;
pMF->ShowControlBar(&m_wndViewManager, (m_wndViewManager.GetStyle() & WS_VISIBLE) == 0, FALSE);
}
}