⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccmdmanager.cpp

📁 这是一个程序的一般架构方法
💻 CPP
字号:
//-- {CycleCode: 1} file [0..388]
//-- {AddDecl: 2} module.includes preserve=yes [0..140]
//## begin module.includes preserve=yes
// Copyright (C) 1991 - 1999 Rational Software Corporation

#include "stdafx.h"
#include "resource.h"
#include "CCMDManager.h"
#include "inlinefunction.h"
#include "CMDInfoOperation.h"

//初始化
CCMDManager::CCMDManager()
{
	m_ViewCMDID = 0;
	m_MainCMDID = 0;
	m_OnceCMDID = 0;
	m_pCObjectManager = NULL;
}

//////////////////////////////////////////////////////////////////////////
//消息映射
USER_BEGIN_MESSAGE_MAP(CCMDManager)
	OnCMDSLEEP( MB_SYS_GRADE , OnCMDSleep)
	OnCMDUNLOAD(MB_SYS_GRADE , OnCMDUnload)
USER_END_MESSAGE_MAP
//##Modelid=431659610109
//## end module.includes preserve=yes
//-- {AddDecl: 3} region.unprotectedFunction [141..261]
//##ModelId=431659610109
bool CCMDManager::Init(CObjectManager * pCObjectManager)
{
//## begin CCMDManager::Init%823E2D92FEED.body preserve=yes
	// TODO: Add your specialized code here.
	m_pCObjectManager = pCObjectManager;
	
	return TRUE;
//## end CCMDManager::Init%823E2D92FEED.body
}
//-- {InsertRegion: 5} module.vulnerableDeclarations [262..291]

//##Modelid=43165969036B
//-- {AddDecl: 4} region.unprotectedFunction [292..383]
//##ModelId=43165969036B
bool CCMDManager::Clear()
{
//## begin CCMDManager::Clear%0D53D554FEED.body preserve=yes
	// TODO: Add your specialized code here.
	m_CMDInfoOperation.RemoveAll();
	return TRUE;
//## end CCMDManager::Clear%0D53D554FEED.body
}
//-- {InsertRegion: 6} module.vulnerableDeclarations [384..388]
 


//##ModelId=4316800201F4
BOOL CCMDManager::OnCmdMsg(UINT nID, int nCode, void * pExtra)
{
	// TODO: Add your specialized code here.
	// NOTE: Requires a correct return value to compile.
	CMDInfo * pCMDInfo = NULL ;
	if (!m_CMDInfoOperation.FindAt( nID , &pCMDInfo))
	{
		return FALSE;
	}

	switch(nCode) 
	{
	case CN_COMMAND:
		{

			if (!pExtra) 
			{
				//执行命令
				//查找当前命令
				CMDInfo * pCurrentInfo = NULL;
				if ( !m_ViewCMDID || !m_CMDInfoOperation.FindAt( m_ViewCMDID , &pCurrentInfo))
				{
					if (!m_OnceCMDID||!m_CMDInfoOperation.FindAt( m_OnceCMDID , &pCurrentInfo))
					{
						if (!m_MainCMDID||!m_CMDInfoOperation.FindAt( m_MainCMDID , &pCurrentInfo))
						{
							
						}
					}
				}
				
				if (pCurrentInfo)
				{
					//重复按了同一个命令
					if (nID == pCurrentInfo->KeyValue)
					{
						pCMDInfo->ProcCommand();
						return TRUE;
					}

					//挂起当前命令
					switch(pCMDInfo->style) 
					{
					case e_OnceCMD:
						{
							m_OnceCMDID = nID;
							m_ViewCMDID = 0;
							FP_PROC_SLEEP fpSleep =(FP_PROC_SLEEP)pCurrentInfo->ProcSleep;
							fpSleep( TRUE );
							break;
						}
					case e_MainCMD:
						{
							m_OnceCMDID = 0;
							m_ViewCMDID = 0;
							m_MainCMDID = nID;
							FP_PROC_SLEEP fpSleep =(FP_PROC_SLEEP)pCurrentInfo->ProcSleep;
							fpSleep( TRUE );
							break;
						}
					case e_ViewCMD:
						{
							m_ViewCMDID = nID;
							FP_PROC_SLEEP fpSleep =(FP_PROC_SLEEP)pCurrentInfo->ProcSleep;
							fpSleep( TRUE );
							break;
						}
					case e_ClarityCMD:
						break;
					default:
						ASSERT(FALSE);
						break;
					}

				}
				
				pCMDInfo->ProcCommand();
				return TRUE;
			}
			else
			{
				//Enable
				if (pCMDInfo->ProcEnableCommand)
				{
					return	pCMDInfo->ProcEnableCommand();
				}
				return TRUE;
			}
		}
		break;
	case CN_UPDATE_COMMAND_UI:
		{
			//设计按键的状态
			if (pCMDInfo->ProcUpdateCommandUI)
			{
				FP_PROC_UPDATE_COMMANDUI fpUpdateCommandUI =
					(FP_PROC_UPDATE_COMMANDUI)pCMDInfo->ProcUpdateCommandUI;
				return	fpUpdateCommandUI(pExtra);
			}
			return TRUE;
		}
		break;
	default:
		return FALSE;
	}

	return FALSE;
}



//##ModelId=4318245101A5
void CCMDManager::AddCmdOperation(UINT CMDID, CMDTYPE nType
								  , FARPROC ProcCommand
								  , FARPROC ProcSleep
								  , FARPROC ProcUpdateCommandUI
								  , FARPROC ProcEnableCommand
								  )
{
	// TODO: Add your specialized code here.
	CMDInfo newCMDInfo;
	newCMDInfo.KeyValue = CMDID;
	newCMDInfo.style = nType;
	newCMDInfo.ProcCommand = ProcCommand;
	newCMDInfo.ProcEnableCommand = ProcEnableCommand;
	newCMDInfo.ProcSleep = ProcSleep;
	newCMDInfo.ProcUpdateCommandUI = ProcUpdateCommandUI;

	if (!m_CMDInfoOperation.Insert( newCMDInfo )) 
	{
		MfxMessageBox ( IDS_ERROR_CMDManager_AddCmdOperation );
	}
}

UINT CCMDManager::GetMaxCMDID()
{
	if (!m_CMDInfoOperation.GetSize())
	{
		return 0;
	}
	return m_CMDInfoOperation.GetAt(m_CMDInfoOperation.GetSize() - 1).KeyValue;
}

void CCMDManager::RemoveCmdOperation(UINT CMDID)
{
	m_CMDInfoOperation.RemoveAt( CMDID );
}

BOOL CCMDManager::OnCMDSleep(UINT uID)
{
	return true;
}
BOOL CCMDManager::OnCMDUnload(UINT uID)
{
	return true;
}

⌨️ 快捷键说明

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