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

📄 language.h

📁 使用INI文件的读取来完成多语言版本的实现
💻 H
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理
#pragma once
#include <Windows.h>
//#define _MAKELANG

#ifndef PCTSTR
#define PCTSTR LPCTSTR
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义
#define _Lang(n, a)				CLanguage::TranslateText(TEXT(#n), TEXT(a))
#define _TLang(n, t)			CLanguage::TranslateText(TEXT(#n), t)
#define _LangEx(n, a)			CLanguage::TranslateTextEx(TEXT(#n), TEXT(a))	// 多行文本或字符串组
#define _TLangEx(n, t)			CLanguage::TranslateTextEx(TEXT(#n), t)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CLanguage 类
class CLanguage
{
public:
	static UINT m_uLang;					// 语言菜单号
	static TCHAR m_tzText[1024];			// 临时字符串

private:
	static UINT m_uMax;						// 语言最大号
	static HFONT m_hFont;					// 对话框字体
	static TCHAR m_tzFileName[MAX_PATH];	// 语言文件名称

public:
	// 初始化语言
	static LANGID Initialize();

	// 列出语言
	static UINT List(HMENU hMenu);

	// 设置语言
	static VOID Set(HMENU hMenu, UINT uLang);

	// 获取语言描述
	static PTSTR GetDescription(HMENU hMenu, UINT uLang);

	// 获取常规字符串
	static PTSTR TranslateText(PCTSTR ptzName, PCTSTR ptzDefault = NULL);

	// 获取常规字符串,并替换特殊字符
	static PTSTR TranslateTextEx(PCTSTR ptzName, PCTSTR ptzDefault = NULL);

	// 获取资源字符串
	static PTSTR TranslateString(UINT uResID);

	// 更新菜单
	static VOID TranslateMenu(HMENU hMenu, PCTSTR ptzResName);

	// 更新对话框
	static VOID TranslateDialog(HWND hWnd, PCTSTR ptzResName);

public:
	// 销毁
	inline static VOID Destroy()
	{
		if (m_hFont)
		{
			DeleteObject(m_hFont);
			m_hFont = NULL;
		}
	}

private:
	// 设置菜单字符串
	static BOOL SetMenuString(HMENU hMenu, UINT uItemID, PCTSTR ptzString, BOOL bByPosition = FALSE);

	// 从语言文件中更新菜单
	static VOID UpdateMenuFromLanguage(HMENU hMenu, PCTSTR ptzSection, PCTSTR ptzPath = TEXT(""));

	// 从资源中更新菜单
	static VOID UpdateMenuFromResource(HMENU hMenu, PCTSTR ptzResName);

	// 从语言文件中更新对话框
	static BOOL CALLBACK UpdateDialogFromLanguage(HWND hWnd, PCTSTR ptzSection);
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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