📄 generaldata.cpp
字号:
#include "stdafx.h"
#include "generaldata.h"
CArray<CLanguageTr*, CLanguageTr*> m_menuitem;
CArray<CLanguageTr*, CLanguageTr*> m_menuitemhint;
CArray<CLanguageTr*, CLanguageTr*> m_globalitem;
CArray<CLanguageTr*, CLanguageTr*> m_contextmenuitem;
void BuildMenuTranslation(CString langfilename)
{
CStdioFile file;
CString filename;
if(!file.Open(langfilename,CFile::modeRead))
return;
CString item;
CString source;
CString target;
while(file.ReadString(item))
{
if(item.Find(';')>=0)
item=item.Left(item.Find(';'));
if(item.Find('=')==-1)
continue;
source=item.Left(item.Find('='));
target=item.Mid(item.Find('=')+1);
if(item.GetLength()>0&&item.GetLength()>0)
{
CLanguageTr* pObj = new CLanguageTr (source, target);
if(item.Left(4)==_T("Menu"))
{
if(item.Find("Hint")>=0)
m_menuitemhint.Add(pObj);
else
m_menuitem.Add(pObj);
}
else if(item.Left(6)==_T("Global"))
m_globalitem.Add(pObj);
else if(item.Left(6)==_T("ConMeu"))
m_contextmenuitem.Add(pObj);
else
delete []pObj;
}
}
file.Close();
}
void GetText(CString text, CString &newtext,CGetTextOptions option)
{
CLanguageTr* pObj;
int i;
CString SourceNM;
switch(option)
{
case menu_item_text://menu item
for(i=0;i<m_menuitem.GetSize();i++)
{
pObj=m_menuitem[i];
SourceNM=pObj->GetSourceName();
if(text.Find(SourceNM)>=0)
{
newtext=text;
newtext.Replace(SourceNM,pObj->GetTargetName());
delete m_menuitem [i];
m_menuitem.RemoveAt(i);
return;
}
}
break;
case menuhint_item_text:///hint on the status bar
for(i=0;i<m_menuitemhint.GetSize();i++)
{
pObj=m_menuitemhint[i];
SourceNM=pObj->GetSourceName();
if(text.Find(SourceNM)>=0)
{
newtext=text;
newtext.Replace(SourceNM,pObj->GetTargetName());
return;
}
}
break;
case global_item_text:
for(i=0;i<m_globalitem.GetSize();i++)
{
pObj=m_globalitem[i];
SourceNM=pObj->GetSourceName();
if(text.Find(SourceNM)>=0)
{
newtext=text;
newtext.Replace(SourceNM,pObj->GetTargetName());
return;
}
}
break;
case conmeu_item_text://context menu item text
for(i=0;i<m_contextmenuitem.GetSize();i++)
{
pObj=m_contextmenuitem[i];
SourceNM=pObj->GetSourceName();
if(text.Find(SourceNM)>=0)
{
newtext=text;
newtext.Replace(SourceNM,pObj->GetTargetName());
return;
}
}
break;
default:
break;
}
newtext=text;
}
bool SetupForAutoComplete(HWND hTarget, DWORD dwFlags)
{
if (hTarget == NULL)
{
return false;
}
bool ok = false;
HINSTANCE hSHLWAPIDLL = NULL;
if (hSHLWAPIDLL == NULL)
{
hSHLWAPIDLL= LoadLibrary("SHLWAPI.DLL");
if (hSHLWAPIDLL== NULL)
{
return false;
}
}
SHAUTOCOMPLETEFN pSHAC = (SHAUTOCOMPLETEFN)GetProcAddress(hSHLWAPIDLL, "SHAutoComplete");
if (pSHAC != NULL)
{
ok = SUCCEEDED(pSHAC(hTarget, dwFlags));
}
FreeLibrary(hSHLWAPIDLL);
return ok;
}
void TranslateMenu(CMenu *menu, CGetTextOptions type)
{
try
{
CString strMenu;
CString strMenuNew;
for(unsigned int i=0;i<menu->GetMenuItemCount();i++)
{
int id=menu->GetMenuItemID(i);
if(id==0)
continue;
else
{
menu->GetMenuString(i,strMenu,MF_BYPOSITION);
GetText(strMenu,strMenuNew,type);
menu->ModifyMenu(i,MF_BYPOSITION,id,strMenuNew);
if(id==-1)
{
CMenu *menusub=menu->GetSubMenu(i);
TranslateMenu(menusub ,type);
}
}
}
}
catch(...)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -