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

📄 generaldata.cpp

📁 一个多窗口的浏览器的程序benbrowse
💻 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 + -