doccontroller.cpp

来自「A Model-View-Controller Framework that i」· C++ 代码 · 共 96 行

CPP
96
字号
#include "StdAfx.h"
#include "DocController.h"
#include "UndoRedoMgr.h"

#include "DocEvents.h"

#include "CmdMsgHandler.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

namespace localNS
{

	// Event Handlers ///////////////////////////////////////////////////////////////
	
	class DocModifiedEventHandler : public SbjCore::EventMgr::EventHandler
	{
		SbjCore::Mvc::Doc::Controller* pTheCtrlr;
	public:
		DocModifiedEventHandler() :
		  SbjCore::EventMgr::EventHandler(SbjCore::Mvc::Doc::Events::EVID_DOC_MODIFIED)
		  {
		  }

		  void SetCtrlr(SbjCore::Mvc::Doc::Controller* p)
		  {
			  pTheCtrlr = p;
		  }

	private:		
		virtual void OnHandle(SbjCore::EventMgr::Event* pEvent)
		{
			SbjCore::Mvc::Doc::Events::DocModified* pTheEvent = dynamic_cast<SbjCore::Mvc::Doc::Events::DocModified*>(pEvent);
			ASSERT(pTheEvent != NULL);
			if (pTheEvent != NULL)
			{
				pTheCtrlr->GetDocument()->SetModifiedFlag(pTheEvent->bModified);
			}
		}
	};

}

namespace SbjCore
{
	namespace Mvc
	{
		namespace Doc
		{
			struct ControllerImpl
			{
				localNS::DocModifiedEventHandler theDocModifiedHandler;


				ControllerImpl()
				{
				}
				virtual ~ControllerImpl()
				{
				}
			};

			/////////////////////////////////////////////////////////

			Controller::Controller(void) :
			m_pImpl(new ControllerImpl)
			{
				m_pImpl->theDocModifiedHandler.SetCtrlr(this);

			}

			Controller::~Controller(void)
			{
				try
				{
					delete m_pImpl;
				}
				catch(...)
				{
					ASSERT(FALSE);
				}
			}

			CDocument* Controller::GetDocument() const
			{
				return (CDocument*)GetCmdTarget();
			}

		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?