#include "stdafx.h"
#include "LoadMenu.h"
Menu::Menu() {}
Menu::~Menu() {}
bool Menu::IsFileExists(LPCTSTR szPath)
{
CFileStatus st;
return CFile::GetStatus(szPath, st);
}
CString Menu::GetFolder(LPCTSTR szPath)
{
CString strPath(szPath);
strPath.TrimRight(_T("\\/"));
int pos = strPath.ReverseFind(_T('\\'));
int pos2 = strPath.ReverseFind(_T('/'));
pos = max(pos, pos2);
if (pos < 0)
{
return _T("");
}
return strPath.Left(pos + 1);
}
CString Menu::GetCurDir()
{
TCHAR szPath[_MAX_PATH];
::GetModuleFileName(_hdllInstance, szPath, _MAX_PATH);
TCHAR szDrive[_MAX_DRIVE];
TCHAR szDir[_MAX_DIR];
TCHAR szFname[_MAX_FNAME];
TCHAR szExt[_MAX_EXT];
_tsplitpath_s(szPath, szDrive, szDir, szFname, szExt);
return CString(szDrive) + szDir;
}
CString Menu::FindConPath(CString FileName)
{
CString sDir = GetCurDir();
CString sPath = sDir + FileName;
while (!IsFileExists(sPath))
{
sDir = GetFolder(sDir);
if (sDir.IsEmpty())
{
return _T("");
}
sPath = sDir + FileName;
}
return sPath;
}
void Menu::CLoadMenu(CString sName, CString szPath)
{
//加载菜单
if (!acedIsMenuGroupLoaded(sName))
{
CString str;
str = FindConPath(szPath + _T(".cuix"));
if (str.IsEmpty())
{
str = FindConPath(szPath + _T(".mnu"));
}
acedLoadPartialMenu(str);
}
}
void Menu::CUnLoadMenu(CString sName, CString szPath)
{
//卸载菜单
if (acedIsMenuGroupLoaded(sName))
{
CString str;
str = FindConPath(szPath + _T(".cuix"));
if (str.IsEmpty())
{
str = FindConPath(szPath + _T(".mnu"));
}
acedUnloadPartialMenu(str);
}
}
void Menu::RemoveMenuCache(CString sName, CString szPath)
{
if (acedIsMenuGroupLoaded(sName))
{
CString str;
str = FindConPath(szPath + _T(".cuix"));
if (str.IsEmpty())
{
return;
}
int len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
char* ptxtTemp = new char[len + 1];
WideCharToMultiByte(CP_ACP, 0, str, -1, ptxtTemp, len, NULL, NULL);
remove(ptxtTemp);
delete[] ptxtTemp;
}
}