XMLCustomizable.cpp
上传用户:kj0090
上传日期:2007-03-02
资源大小:39k
文件大小:4k
源码类别:

xml/soap/webservice

开发平台:

C/C++

  1. /***********************************************************************
  2. *
  3. * This module is part of the XMLGUI system 
  4. *
  5. * File name:       XMLCustomizable.cpp
  6. *
  7. * Creation date:   [21 AUGUST 2002] 
  8. *
  9. * Author(s):       [Kolosenko Ruslan]
  10. *
  11. * Description:     Implements some global routines common to CXMLCustomizable
  12. *                  template classes
  13. *
  14. **********************************************************************/
  15. #include "stdafx.h"
  16. #include "XMLCustomizableForms.h"
  17.    // include from Program FilesMicrosoft Visual StudioVC98MFCSRC
  18. #include "..srcoccimpl.h"
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char THIS_FILE[]=__FILE__;
  22. #define new DEBUG_NEW
  23. #endif
  24. /**************************************************************************
  25. * Function     : CXMLCustomizable_CustomizeXML
  26. * Description  : Invoked when user chooses "Customize" from the dialog's
  27. *              : popup menu. Starts redactor for the XMLGUI dialog template
  28. * Arguments    : szXMLFile - pointer to a string with the name of XML file
  29. *              :    containing XML-style template for dialog
  30. ***************************************************************************/
  31. void XMLGUI_EXT_CLASS CXMLCustomizable_CustomizeXML(LPCTSTR szXMLFile)
  32. {
  33.        // build command line for the redactor application
  34.     CString szCommandLine = " ";
  35.     szCommandLine += szXMLFile;
  36.     int nCommandLineLength = szCommandLine.GetLength();
  37.        // startup info for the redactor's process is taken similar to that
  38.        // of invoking application
  39.     STARTUPINFO startUpInfo;
  40.     PROCESS_INFORMATION processInfo;
  41.     ::GetStartupInfo(&startUpInfo);
  42.        // retrieve %WINDIR% variable value to build path to the notepad.exe
  43.     CString szWinDir;
  44.     DWORD nWinDirLength = ::GetEnvironmentVariable(_T("windir"),szWinDir.GetBuffer(0),0);
  45.     szWinDir.ReleaseBuffer();
  46.     ::GetEnvironmentVariable(_T("windir"),szWinDir.GetBuffer(nWinDirLength),nWinDirLength);
  47.     szWinDir.ReleaseBuffer();
  48.        // start notepad.exe with the XML file name as the command line parameter
  49.     ::CreateProcess(szWinDir+"\notepad.exe",szCommandLine.GetBuffer(nCommandLineLength),
  50.         NULL,NULL,FALSE,0,NULL,NULL,&startUpInfo,&processInfo);
  51.     szCommandLine.ReleaseBuffer();
  52. }
  53. #ifndef _AFX_NO_OCC_SUPPORT
  54. /**************************************************************************
  55. * Function     : CXMLCustomizable_InitializeForm
  56. * Description  : Invoked from the WM_INITDIALOG handler of CFormView-derived
  57. *              : classes, initializes OLE controls on the form view
  58. * Arguments    : pFormView - pointer to the form view being initialized
  59. *              : pOccDialogInfo - pointer to the OCC dialog info, the form
  60. *              :    should pass its protected member m_pOccDialogInfo
  61. *              : pDlgTemplate - pointer to the CDlgTemplate object, holding
  62. *              :    init data for the created OLE controls
  63. *              : szTemplateName - pointer to a string holding the name
  64. *              :    of the dialog template resource for the view, used as
  65. *              :    a reserve if init data cannot be obtained from CDlgTemplate
  66. ***************************************************************************/
  67. void XMLGUI_EXT_CLASS CXMLCustomizable_InitializeForm(CFormView* pFormView,
  68.            _AFX_OCC_DIALOG_INFO* pOccDialogInfo,CDlgTemplate* pDlgTemplate,
  69.            LPCTSTR szTemplateName)
  70. {
  71.        // create OLE controls
  72.     COccManager* pOccManager = afxOccManager;
  73.     if ((pOccManager != NULL) && (pOccDialogInfo != NULL))
  74.     {
  75.         if ( (LPDLGTEMPLATE)(*pDlgTemplate) )
  76.         {
  77.                // if dialog template is valid DLGTEMPLATE -
  78.                // we can obtain init data from it
  79.             pOccManager->CreateDlgControls(pFormView,pDlgTemplate->GetInitData(),
  80.                 pOccDialogInfo);
  81.         }
  82.         else
  83.         {
  84.                // otherwise we use init data from resources
  85.             pOccManager->CreateDlgControls(pFormView,szTemplateName,
  86.                 pOccDialogInfo);
  87.         }
  88.     }
  89. }
  90. #endif /* _AFX_NO_OCC_SUPPORT */