Language.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:3k
源码类别:

CA认证

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. // 预处理
  3. #pragma once
  4. #include <Windows.h>
  5. //#define _MAKELANG
  6. #include "..ControlXpButtonSTBCMenu.h"
  7. //#include "DynRes.h"
  8. //#include "JXIniFile.h"
  9. #ifndef PCTSTR
  10. #define PCTSTR LPCTSTR
  11. #endif
  12. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  13. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  14. // 宏定义
  15. #define _Lang(n, a) CLanguage::TranslateText(TEXT(#n), TEXT(a))
  16. #define _TLang(n, t) CLanguage::TranslateText(TEXT(#n), t)
  17. #define _LangEx(n, a) CLanguage::TranslateTextEx(TEXT(#n), TEXT(a)) // 多行文本或字符串组
  18. #define _TLangEx(n, t) CLanguage::TranslateTextEx(TEXT(#n), t)
  19. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  20. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  21. // CLanguage 类
  22. class CLanguage
  23. {
  24. public:
  25. static UINT m_uLang; // 语言菜单号
  26. static TCHAR m_tzText[1024]; // 临时字符串
  27. private:
  28. static UINT m_uMax; // 语言最大号
  29. static HFONT m_hFont; // 对话框字体
  30. static TCHAR m_tzFileName[MAX_PATH]; // 语言文件名称
  31. public:
  32. // 初始化语言
  33. static LANGID Initialize();
  34. // 列出语言
  35. static UINT List(HMENU hMenu);
  36. // 设置语言
  37. static VOID Set(HMENU hMenu, UINT uLang);
  38. // 获取语言描述
  39. static PTSTR GetDescription(HMENU hMenu, UINT uLang);
  40. // 获取常规字符串
  41. static CString TranslateText(PCTSTR ptzName, PCTSTR ptzDefault = NULL);
  42. // 获取常规字符串,并替换特殊字符
  43. static PTSTR TranslateTextEx(PCTSTR ptzName, PCTSTR ptzDefault = NULL);
  44. // 获取资源字符串
  45. static PTSTR TranslateString(UINT uResID);
  46. // 更新菜单
  47. static VOID TranslateMenu(HMENU hMenu, PCTSTR ptzResName);
  48. // 更新菜单BCMenu
  49. static VOID TranslateMenu(BCMenu * pBMenu, PCTSTR ptzResName);
  50. // 更新对话框
  51. static VOID TranslateDialog(HWND hWnd, PCTSTR ptzResName);
  52. public:
  53. // 销毁
  54. inline static VOID Destroy()
  55. {
  56. if (m_hFont)
  57. {
  58. DeleteObject(m_hFont);
  59. m_hFont = NULL;
  60. }
  61. }
  62. private:
  63. // 设置菜单字符串
  64. static BOOL SetMenuString(HMENU hMenu, UINT uItemID, PCTSTR ptzString, BOOL bByPosition = FALSE);
  65. // 从语言文件中更新菜单
  66. static VOID UpdateMenuFromLanguage(HMENU hMenu, PCTSTR ptzSection, PCTSTR ptzPath = TEXT(""));
  67. // 从语言文件中更新菜单
  68. static VOID UpdateMenuFromLanguage(BCMenu * pBMenu, PCTSTR ptzSection, PCTSTR ptzPath = TEXT(""));
  69. // 从资源中更新菜单
  70. static VOID UpdateMenuFromResource(HMENU hMenu, PCTSTR ptzResName);
  71. // 从语言文件中更新对话框
  72. static BOOL CALLBACK UpdateDialogFromLanguage(HWND hWnd, PCTSTR ptzSection);
  73. // 从资源中更新对话框
  74. static VOID UpdateDialogFromResource(HWND hWnd, PCTSTR ptzResName);
  75. };
  76. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////