ResourceEditorDoc.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // ResourceEditorDoc.cpp : implementation of the CResourceEditorDoc class
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "ResourceEditor.h"
  22. #include "ResourceEditorDoc.h"
  23. #include "ResourceExport.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CResourceEditorDoc
  31. IMPLEMENT_DYNCREATE(CResourceEditorDoc, CDocument)
  32. BEGIN_MESSAGE_MAP(CResourceEditorDoc, CDocument)
  33. //{{AFX_MSG_MAP(CResourceEditorDoc)
  34. ON_COMMAND(ID_FILE_EXPOR_DLL, OnFileExportDll)
  35. ON_COMMAND(ID_FILE_EXPOR_RC, OnFileExportRc)
  36. //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CResourceEditorDoc construction/destruction
  40. CResourceEditorDoc::CResourceEditorDoc()
  41. {
  42. m_pResources = NULL;
  43. m_pLanguageInfo = NULL;
  44. }
  45. CResourceEditorDoc::~CResourceEditorDoc()
  46. {
  47. CMDTARGET_RELEASE(m_pResources);
  48. }
  49. BOOL CResourceEditorDoc::OnNewDocument()
  50. {
  51. if (!CDocument::OnNewDocument())
  52. return FALSE;
  53. // TODO: add reinitialization code here
  54. // (SDI documents will reuse this document)
  55. return TRUE;
  56. }
  57. BOOL CResourceEditorDoc::OnOpenDocument(LPCTSTR lpszPathName)
  58. {
  59. SAFE_DELETE(m_pResources);
  60. m_pResources = new CXTPPropExchangeXMLNode(TRUE, 0, _T("resource"));
  61. SetModifiedFlag(FALSE);
  62. if (!m_pResources->LoadFromFile(lpszPathName))
  63. return FALSE;
  64. DWORD nLangId = 0;
  65. PX_DWord(m_pResources, _T("LANGID"), nLangId);
  66. m_pLanguageInfo = CXTPResourceManager::GetLanguageInfo(nLangId);
  67. if (!m_pLanguageInfo)
  68. return FALSE;
  69. return TRUE;
  70. }
  71. BOOL CResourceEditorDoc::AssignResource(CXTPPropExchangeXMLNode* pResources)
  72. {
  73. ASSERT(m_pResources == NULL);
  74. pResources->SetLoading(TRUE);
  75. DWORD nLangId = 0;
  76. PX_DWord(pResources, _T("LANGID"), nLangId);
  77. m_pLanguageInfo = CXTPResourceManager::GetLanguageInfo(nLangId);
  78. if (m_pLanguageInfo == NULL)
  79. return FALSE;
  80. SetModifiedFlag(TRUE);
  81. m_pResources = pResources;
  82. return TRUE;
  83. }
  84. BOOL CResourceEditorDoc::OnSaveDocument(LPCTSTR lpszPathName)
  85. {
  86. m_pResources->SaveToFile(lpszPathName);
  87. SetModifiedFlag(FALSE);     // back to unmodified
  88. return TRUE;        // success
  89. }
  90. /////////////////////////////////////////////////////////////////////////////
  91. // CResourceEditorDoc diagnostics
  92. #ifdef _DEBUG
  93. void CResourceEditorDoc::AssertValid() const
  94. {
  95. CDocument::AssertValid();
  96. }
  97. void CResourceEditorDoc::Dump(CDumpContext& dc) const
  98. {
  99. CDocument::Dump(dc);
  100. }
  101. #endif //_DEBUG
  102. /////////////////////////////////////////////////////////////////////////////
  103. // CResourceEditorDoc commands
  104. void CResourceEditorDoc::OnFileExportDll() 
  105. {
  106. if (!m_pResources)
  107. return;
  108. CString strFilter = _T("32-bit Dynamic Library (*.dll)|*.dll|All files (*.*)|*.*||");
  109. CString strTitle = GetPathName();
  110. REPLACE_S(strTitle, _T(".xml"), _T(".dll"));
  111. CFileDialog fd(FALSE, _T("dll"), strTitle, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter);
  112. if (fd.DoModal() != IDOK)
  113. return;
  114. CResourceExport re;
  115. re.ExportDll(m_pResources, fd.GetPathName());
  116. }
  117. void CResourceEditorDoc::OnFileExportRc() 
  118. {
  119. if (!m_pResources)
  120. return;
  121. CString strFilter = _T("Resource Script (*.rc)|*.rc|All files (*.*)|*.*||");
  122. CString strTitle = GetPathName();
  123. REPLACE_S(strTitle, _T(".xml"), _T(".rc"));
  124. CFileDialog fd(FALSE, _T("rc"), strTitle, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter);
  125. if (fd.DoModal() != IDOK)
  126. return;
  127. CResourceExport re;
  128. re.ExportRc(m_pResources, fd.GetPathName());
  129. }