ExtLocalization.h
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:3k
源码类别:

界面编程

开发平台:

Visual C++

  1. // This is part of the Professional User Interface Suite library.
  2. // Copyright (C) 2001-2009 FOSS Software, Inc.
  3. // All rights reserved.
  4. //
  5. // http://www.prof-uis.com
  6. // mailto:support@prof-uis.com
  7. //
  8. // This source code can be used, modified and redistributed
  9. // under the terms of the license agreement that is included
  10. // in the Professional User Interface Suite package.
  11. //
  12. // Warranties and Disclaimers:
  13. // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
  14. // INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  16. // IN NO EVENT WILL FOSS SOFTWARE INC. BE LIABLE FOR ANY DIRECT,
  17. // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES,
  18. // INCLUDING DAMAGES FOR LOSS OF PROFITS, LOSS OR INACCURACY OF DATA,
  19. // INCURRED BY ANY PERSON FROM SUCH PERSON'S USAGE OF THIS SOFTWARE
  20. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  21. #if (!defined __EXT_LOCALIZATION_H)
  22. #define __EXT_LOCALIZATION_H
  23. #if (!defined __EXT_MFC_DEF_H)
  24. #include <ExtMfcDef.h>
  25. #endif // __EXT_MFC_DEF_H
  26. class __PROF_UIS_API CExtLocalResourceHelper
  27. {
  28. protected:
  29. HINSTANCE m_hInstPrevResource;
  30. bool m_bFree:1;
  31. public:
  32. static bool g_bUseResourceHandle;
  33. protected:
  34. void Init(
  35. HINSTANCE hInstResourceModule
  36. )
  37. {
  38. ASSERT( m_bFree );
  39. ASSERT( hInstResourceModule != NULL );
  40. m_hInstPrevResource =
  41. ::AfxGetResourceHandle();
  42. ::AfxSetResourceHandle(
  43. hInstResourceModule
  44. );
  45. m_bFree = false;
  46. }
  47. void Init(
  48. __EXT_MFC_SAFE_LPCTSTR sResourceModulePath
  49. )
  50. {
  51. HINSTANCE hInstResourceModule =
  52. ::GetModuleHandle(
  53. sResourceModulePath
  54. );
  55. Init( hInstResourceModule );
  56. }
  57. public:
  58. CExtLocalResourceHelper()
  59. : m_hInstPrevResource( NULL )
  60. , m_bFree( true )
  61. {
  62. #if (!defined __EXT_PROFUIS_STATIC_LINK)
  63. Init( __PROF_UIS_MODULE_NAME );
  64. #else
  65. //Init( ::AfxGetInstanceHandle() );
  66. Init( g_bUseResourceHandle ? ::AfxGetResourceHandle() : ::AfxGetInstanceHandle() );
  67. #endif // #if (!defined __EXT_PROFUIS_STATIC_LINK)
  68. }
  69. CExtLocalResourceHelper(
  70. HINSTANCE hInstResourceModule
  71. )
  72. : m_hInstPrevResource( NULL )
  73. , m_bFree( true )
  74. {
  75. Init( hInstResourceModule );
  76. }
  77. CExtLocalResourceHelper(
  78. __EXT_MFC_SAFE_LPCTSTR sResourceModulePath
  79. )
  80. : m_hInstPrevResource( NULL )
  81. , m_bFree( true )
  82. {
  83. Init( sResourceModulePath );
  84. }
  85. virtual ~CExtLocalResourceHelper()
  86. {
  87. Free();
  88. }
  89. void Free()
  90. {
  91. if( m_bFree )
  92. return;
  93. ::AfxSetResourceHandle(
  94. m_hInstPrevResource
  95. );
  96. m_hInstPrevResource = NULL;
  97. m_bFree = true;
  98. }
  99. }; // class CExtLocalResourceHelper
  100. #endif // __EXT_LOCALIZATION_H