📄 ccmdmanager.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 + -