// PlugIn.cpp : implementation file // #include "stdafx.h" #include "driver.h" #include "PlugIn.h" #include "VSEdit.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPlugIn property page IMPLEMENT_DYNCREATE(CPlugIn, CPropertyPage) CPlugIn::CPlugIn() : CPropertyPage(CPlugIn::IDD) { //{{AFX_DATA_INIT(CPlugIn) m_ProgID = _T(""); //}}AFX_DATA_INIT m_pPlugIn = NULL; } CPlugIn::~CPlugIn() { if ( m_pPlugIn ) m_pPlugIn->Release(); } void CPlugIn::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPlugIn) DDX_Text(pDX, IDC_PROG_ID, m_ProgID); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPlugIn, CPropertyPage) //{{AFX_MSG_MAP(CPlugIn) ON_BN_CLICKED(IDC_CONFIGURE, OnConfigure) ON_BN_CLICKED(IDC_CREATE_INSTANCE, OnCreateInstance) ON_BN_CLICKED(IDC_EDIT_VARSET, OnEditVarset) ON_BN_CLICKED(IDC_GET_DESC, OnGetDesc) ON_BN_CLICKED(IDC_GET_NAME, OnGetName) ON_BN_CLICKED(IDC_POST_TASK, OnPostTask) ON_BN_CLICKED(IDC_PRE_TASK, OnPreTask) ON_BN_CLICKED(IDC_REGISTERABLE_FILES, OnRegisterableFiles) ON_BN_CLICKED(IDC_REQUIRED_FILES, OnRequiredFiles) ON_BN_CLICKED(IDC_STORE_RESULT, OnStoreResult) ON_BN_CLICKED(IDC_VIEW_RESULT, OnViewResult) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPlugIn message handlers void CPlugIn::OnConfigure() { HRESULT hr; CString msg; if ( m_pPlugIn ) { hr = m_pPlugIn->ConfigureSettings(m_pVarSet); if ( SUCCEEDED(hr) ) { msg = L"ConfigureSettings succeeded"; } else { msg.Format(L"ConfigureSettings failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnCreateInstance() { UpdateData(TRUE); HRESULT hr = S_OK; CLSID clsid; WCHAR progid[200]; CString msg; if ( m_pPlugIn ) { m_pPlugIn->Release(); m_pPlugIn = NULL; } wcscpy(progid,m_ProgID); hr = CLSIDFromProgID(progid,&clsid); if ( SUCCEEDED(hr) ) { hr = CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IMcsDomPlugIn,(void**)&m_pPlugIn); if ( SUCCEEDED(hr) ) { msg = L"CreateInstance succeeded!"; } else { msg.Format(L"CreateInstance failed, hr=%lx",hr); } } else { msg.Format(L"CLSIDFromProgID failed, hr=%lx",hr); } MessageBox(msg); } void CPlugIn::OnEditVarset() { CVarSetEditDlg vedit; vedit.SetVarSet(m_pVarSet); vedit.DoModal(); m_pVarSet = vedit.GetVarSet(); } void CPlugIn::OnGetDesc() { HRESULT hr; CString msg; BSTR val = NULL; if ( m_pPlugIn ) { hr = m_pPlugIn->GetDescription(&val); if ( SUCCEEDED(hr) ) { msg = val; } else { msg.Format(L"GetDescription failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnGetName() { HRESULT hr; CString msg; BSTR val = NULL; if ( m_pPlugIn ) { hr = m_pPlugIn->GetName(&val); if ( SUCCEEDED(hr) ) { msg = val; } else { msg.Format(L"GetDescription failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnPostTask() { HRESULT hr; CString msg; if ( m_pPlugIn ) { hr = m_pPlugIn->PostMigrationTask(m_pVarSet); if ( SUCCEEDED(hr) ) { msg = L"Postmigration task succeeded"; } else { msg.Format(L"Postmigration task failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnPreTask() { HRESULT hr; CString msg; if ( m_pPlugIn ) { hr = m_pPlugIn->PreMigrationTask(m_pVarSet); if ( SUCCEEDED(hr) ) { msg = L"Premigration task succeeded"; } else { msg.Format(L"Premigration task failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnRegisterableFiles() { // TODO: Add your control notification handler code here } void CPlugIn::OnRequiredFiles() { // TODO: Add your control notification handler code here } void CPlugIn::OnStoreResult() { HRESULT hr; CString msg; if ( m_pPlugIn ) { hr = m_pPlugIn->StoreResults(m_pVarSet); if ( SUCCEEDED(hr) ) { msg = L"StoreResult succeeded"; } else { msg.Format(L"StoreResult failed, hr=%lx",hr); } MessageBox(msg); } } void CPlugIn::OnViewResult() { HRESULT hr; CString msg; BSTR text = NULL; if ( m_pPlugIn ) { hr = m_pPlugIn->GetResultString(m_pVarSet,&text); if ( SUCCEEDED(hr) ) { msg = text; } else { msg.Format(L"GetResultString failed, hr=%lx",hr); } MessageBox(msg); } } BOOL CPlugIn::OnInitDialog() { CPropertyPage::OnInitDialog(); HRESULT hr = m_pVarSet.CreateInstance(CLSID_VarSet); if ( FAILED(hr) ) { CString msg; msg.Format(L"Failed to create VarSet, CoCreateInstance returned %lx",hr); MessageBox(msg); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }