MACRODG.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // MacroDlg.Cpp : implementation file
  2. //
  3. #include "StdAfx.H"
  4. #include "TestCon.H"
  5. #include "Resource.HM"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMacroDlg dialog
  13. CMacroDlg::CMacroDlg( CWnd* pParent ) :
  14.    CDialog( CMacroDlg::IDD, pParent ),
  15.    m_pScriptManager( NULL ),
  16.    m_pScript( NULL )
  17. {
  18. //{{AFX_DATA_INIT(CMacroDlg)
  19. m_strMacroName = _T("");
  20. //}}AFX_DATA_INIT
  21. }
  22. void CMacroDlg::DoDataExchange(CDataExchange* pDX)
  23. {
  24.    int iItem;
  25. CDialog::DoDataExchange(pDX);
  26. //{{AFX_DATA_MAP(CMacroDlg)
  27. DDX_Control(pDX, IDOK, m_butRun);
  28. DDX_Control(pDX, IDC_MACROS, m_lbMacros);
  29. DDX_LBString(pDX, IDC_MACROS, m_strMacroName);
  30. //}}AFX_DATA_MAP
  31.    if( pDX->m_bSaveAndValidate )
  32.    {
  33.   iItem = m_lbMacros.GetCurSel();
  34.   if( iItem == LB_ERR )
  35.   {
  36.  m_pScript = NULL;
  37.   }
  38.   else
  39.   {
  40.  m_pScript = (CScript*)m_lbMacros.GetItemDataPtr( iItem );
  41.  ASSERT( m_pScript != NULL );
  42.   }
  43.    }
  44. }
  45. BEGIN_MESSAGE_MAP(CMacroDlg, CDialog)
  46. //{{AFX_MSG_MAP(CMacroDlg)
  47. ON_BN_CLICKED(IDC_OPENFILE, OnOpenFile)
  48. ON_WM_HELPINFO()
  49. ON_WM_CONTEXTMENU()
  50. //}}AFX_MSG_MAP
  51. END_MESSAGE_MAP()
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CMacroDlg message handlers
  54. BOOL CMacroDlg::OnInitDialog()
  55. {
  56. CDialog::OnInitDialog();
  57.    UpdateMacroList();
  58. return( TRUE );
  59. }
  60. void CMacroDlg::OnOpenFile()
  61. {
  62.    int nResult;
  63.    HRESULT hResult;
  64.    CFileDialog dlg( TRUE, _T( "dsm" ), NULL, OFN_HIDEREADONLY|
  65.   OFN_OVERWRITEPROMPT, _T( "Script Files (*.dsm)|*.dsm||" ) );
  66.    nResult = dlg.DoModal();
  67.    if( nResult != IDOK )
  68.    {
  69.   return;
  70.    }
  71.    hResult = m_pScriptManager->LoadScript( dlg.GetPathName(),
  72.   dlg.GetFileTitle() );
  73.    if( FAILED( hResult ) )
  74.    {
  75.   CString strErrorMessage;
  76.   _com_error error( hResult );
  77.   AfxFormatString2( strErrorMessage, IDS_ERRORLOADINGSCRIPT,
  78.  dlg.GetFileTitle(), error.ErrorMessage() );
  79.   AfxMessageBox( strErrorMessage );
  80.   return;
  81.    }
  82.    UpdateMacroList();
  83. }
  84. void CMacroDlg::UpdateMacroList()
  85. {
  86.    POSITION posMacro;
  87.    POSITION posScript;
  88.    CScript* pScript;
  89.    CString strMacroName;
  90.    int iItem;
  91.    m_lbMacros.ResetContent();
  92.    posScript = m_pScriptManager->GetFirstScriptPosition();
  93.    while( posScript != NULL )
  94.    {
  95.   pScript = m_pScriptManager->GetNextScript( posScript );
  96.   ASSERT( pScript != NULL );
  97.   posMacro = pScript->GetFirstMacroPosition();
  98.   while( posMacro != NULL )
  99.   {
  100.  strMacroName = pScript->GetNextMacroName( posMacro );
  101.  iItem = m_lbMacros.AddString( strMacroName );
  102.  m_lbMacros.SetItemDataPtr( iItem, pScript );
  103.   }
  104.    }
  105.    if( m_lbMacros.GetCount() == 0 )
  106.    {
  107.   m_lbMacros.SetCurSel( -1 );
  108.   m_butRun.EnableWindow( FALSE );
  109.    }
  110.    else
  111.    {
  112.   m_lbMacros.SetCurSel( 0 );
  113.   m_butRun.EnableWindow( TRUE );
  114.    }
  115. }
  116. static DWORD rgmapCHID[] =
  117. {
  118.    IDC_MACROS, HIDC_MACROS,
  119.    IDC_OPENFILE, HIDC_OPENFILE,
  120.    0, 0
  121. };
  122. BOOL CMacroDlg::OnHelpInfo( HELPINFO* pHelpInfo )
  123. {
  124.    return( ::WinHelp( HWND( pHelpInfo->hItemHandle ),
  125.   AfxGetApp()->m_pszHelpFilePath, HELP_WM_HELP, DWORD( LPVOID(
  126.   rgmapCHID ) ) ) );
  127. }
  128. void CMacroDlg::OnContextMenu( CWnd* pWnd, CPoint /* point */ )
  129. {
  130.    ::WinHelp( HWND( *pWnd ), AfxGetApp()->m_pszHelpFilePath, HELP_CONTEXTMENU,
  131.   DWORD( LPVOID( rgmapCHID ) ) );
  132. }