GENPAGE.CPP
// genpage.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Service.h"  
#include "csnapin.h" 
#include "resource.h" 
#include "afxdlgs.h" 
#include "genpage.h" 
#include "dataobj.h" 
#include "prsht.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CGeneralPage property page 
 
IMPLEMENT_DYNCREATE(CGeneralPage, CPropertyPage) 
 
CGeneralPage::CGeneralPage() : CPropertyPage(CGeneralPage::IDD) 
{ 
 
//{{AFX_DATA_INIT(CGeneralPage) 
m_szName = _T(""); 
//}}AFX_DATA_INIT 
 
    m_hConsoleHandle = NULL; 
    m_bUpdate = FALSE; 
 
} 
 
CGeneralPage::~CGeneralPage() 
{ 
} 
 
void CGeneralPage::DoDataExchange(CDataExchange* pDX) 
{ 
CPropertyPage::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CGeneralPage) 
DDX_Control(pDX, IDC_NEW_FOLDER, m_EditCtrl); 
DDX_Text(pDX, IDC_NEW_FOLDER, m_szName); 
DDV_MaxChars(pDX, m_szName, 64); 
//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CGeneralPage, CPropertyPage) 
//{{AFX_MSG_MAP(CGeneralPage) 
ON_WM_DESTROY() 
ON_EN_CHANGE(IDC_NEW_FOLDER, OnEditChange) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CGeneralPage message handlers 
 
 
 
void CGeneralPage::OnDestroy()  
{ 
    // Note - This needs to be called only once.   
    // If called more than once, it will gracefully return an error. 
    MMCFreeNotifyHandle(m_hConsoleHandle); 
 
    CPropertyPage::OnDestroy(); 
 
    // Delete the CGeneralPage object 
    delete this; 
} 
 
 
void CGeneralPage::OnEditChange()  
{ 
    // Page is dirty, mark it. 
SetModified(); 
    m_bUpdate = TRUE; 
} 
 
 
BOOL CGeneralPage::OnApply()  
{ 
if (m_bUpdate == TRUE) 
    { 
 
USES_CONVERSION; 
        // Simple string cookie, could be anything! 
        LPWSTR lpString =  
            reinterpret_cast<LPWSTR>( 
          ::GlobalAlloc(GMEM_SHARE,  
                        (sizeof(wchar_t) *  
                        (m_szName.GetLength() + 1)) 
                        )); 
 
        wcscpy(lpString, T2COLE(m_szName)); 
 
        // Send a property change notify to the console 
        MMCPropertyChangeNotify(m_hConsoleHandle, reinterpret_cast<long>(lpString)); 
        m_bUpdate = FALSE; 
    } 
 
return CPropertyPage::OnApply(); 
} 
///////////////////////////////////////////////////////////////////////////// 
// CExtensionPage property page 
 
IMPLEMENT_DYNCREATE(CExtensionPage, CPropertyPage) 
 
CExtensionPage::CExtensionPage() : CPropertyPage(CExtensionPage::IDD) 
{ 
//{{AFX_DATA_INIT(CExtensionPage) 
m_szText = _T(""); 
//}}AFX_DATA_INIT 
} 
 
CExtensionPage::~CExtensionPage() 
{ 
} 
 
void CExtensionPage::DoDataExchange(CDataExchange* pDX) 
{ 
CPropertyPage::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CExtensionPage) 
DDX_Control(pDX, IDC_EXT_TEXT, m_hTextCtrl); 
DDX_Text(pDX, IDC_EXT_TEXT, m_szText); 
//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CExtensionPage, CPropertyPage) 
//{{AFX_MSG_MAP(CExtensionPage) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CExtensionPage message handlers 
 
BOOL CExtensionPage::OnInitDialog()  
{ 
CPropertyPage::OnInitDialog(); 
 
    m_hTextCtrl.SetWindowText(m_szText); 
return TRUE;  // return TRUE unless you set the focus to a control 
              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CStartUpWizard property page 
 
 
// NOTICE: need to override this because CPropertyPage::AssertValid()  
// would otherwise assert 
IMPLEMENT_DYNCREATE(CBaseWizard, CPropertyPage) 
 
CBaseWizard::CBaseWizard(UINT id) : CPropertyPage(id) 
{ 
    // NOTICE: need to do this because MFC was compiled with NT 4.0 
// headers that had a different size 
    ZeroMemory(&m_psp97, sizeof(PROPSHEETPAGE));  
 
    memcpy(&m_psp97, &m_psp, m_psp.dwSize); 
    m_psp97.dwSize = sizeof(PROPSHEETPAGE); 
} 
 
void CBaseWizard::OnDestroy()  
{ 
CPropertyPage::OnDestroy(); 
    delete this; 
} 
 
BEGIN_MESSAGE_MAP(CBaseWizard, CPropertyPage) 
//{{AFX_MSG_MAP(CStartupWizard1) 
ON_WM_DESTROY() 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
IMPLEMENT_DYNCREATE(CStartUpWizard, CBaseWizard) 
 
CStartUpWizard::CStartUpWizard() : CBaseWizard(CStartUpWizard::IDD) 
{ 
//{{AFX_DATA_INIT(CStartUpWizard) 
// NOTE: the ClassWizard will add member initialization here 
//}}AFX_DATA_INIT 
    m_psp97.dwFlags |= PSP_HIDEHEADER; 
} 
 
CStartUpWizard::~CStartUpWizard() 
{ 
} 
 
void CStartUpWizard::DoDataExchange(CDataExchange* pDX) 
{ 
CPropertyPage::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CStartUpWizard) 
// NOTE: the ClassWizard will add DDX and DDV calls here 
//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CStartUpWizard, CBaseWizard) 
//{{AFX_MSG_MAP(CStartUpWizard) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CStartUpWizard message handlers 
 
BOOL CStartUpWizard::OnInitDialog()  
{ 
CPropertyPage::OnInitDialog(); 
 
return TRUE;  // return TRUE unless you set the focus to a control 
              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
BOOL CStartUpWizard::OnSetActive()  
{ 
// TODO: Add your specialized code here and/or call the base class 
 
// TODO: Add your specialized code here and/or call the base class 
    HWND hwnd = GetParent()->m_hWnd; 
    ::SendMessage(hwnd, PSM_SETWIZBUTTONS, 0, PSWIZB_NEXT); 
 
return CPropertyPage::OnSetActive(); 
} 
///////////////////////////////////////////////////////////////////////////// 
// CStartupWizard1 property page 
 
IMPLEMENT_DYNCREATE(CStartupWizard1, CBaseWizard) 
 
CStartupWizard1::CStartupWizard1() : CBaseWizard(CStartupWizard1::IDD) 
{ 
//{{AFX_DATA_INIT(CStartupWizard1) 
// NOTE: the ClassWizard will add member initialization here 
//}}AFX_DATA_INIT 
 
    m_psp97.dwFlags |= PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; 
    m_psp97.pszHeaderTitle = _T("This is the title line"); 
m_psp97.pszHeaderSubTitle = _T("This is the sub-title line"); 
} 
 
CStartupWizard1::~CStartupWizard1() 
{ 
} 
 
void CStartupWizard1::DoDataExchange(CDataExchange* pDX) 
{ 
CPropertyPage::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CStartupWizard1) 
// NOTE: the ClassWizard will add DDX and DDV calls here 
//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CStartupWizard1, CBaseWizard) 
//{{AFX_MSG_MAP(CStartupWizard1) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CStartupWizard1 message handlers 
 
BOOL CStartupWizard1::OnInitDialog()  
{ 
CPropertyPage::OnInitDialog(); 
 
// TODO: Add extra initialization here 
 
return TRUE;  // return TRUE unless you set the focus to a control 
              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
BOOL CStartupWizard1::OnSetActive()  
{ 
// TODO: Add your specialized code here and/or call the base class 
    HWND hwnd = GetParent()->m_hWnd; 
    ::SendMessage(hwnd, PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH | PSWIZB_BACK); 
 
return CPropertyPage::OnSetActive(); 
}