/////////////////////////////////////////////////////////////////////////////
// #ifndef __ARMEN_H__
// #define __ARMEN_H__
// Central Bank of Armenia, Information Security Department
// Armen Hakobyan, 2004. mailto:armen.h@web.am
// http://www.codeproject.com/script/articles/list_articles.asp?userid=25653
// #endif // __ARMEN_H__
/////////////////////////////////////////////////////////////////////////////
#ifndef __TLSWA_WIZPG_H__
#define __TLSWA_WIZPG_H__
#if defined( _MSC_VER ) && ( _MSC_VER >= _MSC_VER_60 )
#pragma once
#endif
#include < atldlgs.h >
#include < atlddx.h >
#include "dmosink.h"
/////////////////////////////////////////////////////////////////////////////
#define MIN_TL_SIZE 2
#define MAX_TL_SIZE 512
#define SQLDMO_TIMEOUT 20L
/////////////////////////////////////////////////////////////////////////////
#define WIZ_INITED 0x00000001
#define WIZ_CANCELLED 0x00000002
#define WIZ_REPEAT 0x00000004
#define WIZ_ERRORS 0x00000008
/////////////////////////////////////////////////////////////////////////////
template < class T >
class ATL_NO_VTABLE CWinDataExchangeEx : public CWinDataExchange< T >
{
public:
void OnDataValidateError( IN UINT nCtrlID, IN BOOL bSave, IN _XData& xData )
{
if( bSave == TRUE &&
xData.nDataType == ddxDataInt )
{
_MessageBoxEx(
IDP_INT_RANGE, MB_OK | MB_ICONEXCLAMATION, xData.intData.nMin, xData.intData.nMax
);
T* pT = static_cast< T* >( this );
CEdit wndEdit( pT->GetDlgItem( nCtrlID ) );
wndEdit.SetFocus();
wndEdit.SetSel( 0, -1 );
}
}
};
template < class T >
class ATL_NO_VTABLE CWizPgBase : public CPropertyPageImpl< T >
{
friend class CWizPsh;
public:
DECLARE_WND_SUPERCLASS( _T( "TLSW_Window" ), T::GetWndClassName() )
protected:
CWizPsh* m_pWizPsh;
public:
BEGIN_MSG_MAP( T )
CHAIN_MSG_MAP( CPropertyPageImpl< T > )
END_MSG_MAP()
public:
CWizPgBase( void ) : m_pWizPsh( NULL )
{
m_psp.dwFlags |= PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; // | PSP_HASHELP;
}
public:
BOOL SetDlgItemTextByID( IN INT iCtrlID, IN INT uResID )
{
ATLASSERT( IS_INTRESOURCE( uResID ) );
TCHAR szText[ MAX_RES_STR ] = { 0 };
if( AtlLoadString( uResID, szText, _countof( szText ) ) )
return SetDlgItemText( iCtrlID, szText );
return ( FALSE );
}
public:
virtual void ResetToDefaults( void )
{
}
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgIntro : public CWizPgBase< CWizPgIntro >
{
public:
enum DLGID { IDD = IDD_WIZ_INTRO };
public: // Construction
CWizPgIntro( void );
public: // Maps
BEGIN_MSG_MAP( CWizPgIntro )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
CHAIN_MSG_MAP( CWizPgBase< CWizPgIntro > )
END_MSG_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgLogin : public CWizPgBase< CWizPgLogin >
, public CWinDataExchange< CWizPgLogin >
{
public:
enum DLGID { IDD = IDD_WIZ_LOGIN };
public:
TCHAR m_szServ [ MAX_SQL_STR ];
BOOL m_bSqlSrvAuth;
BOOL m_bSqlStart;
BOOL m_bSqlRemote;
public: // Construction
CWizPgLogin( void );
public: // Maps
BEGIN_MSG_MAP( CWizPgLogin )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
COMMAND_HANDLER( IDC_CBO_SRV, CBN_DROPDOWN, OnCboSqlSrvDropDown )
#if defined( _ATL_VER ) && ( _ATL_VER >= _ATL_VER_70 )
COMMAND_RANGE_CODE_HANDLER( IDC_RAD_WINAUTH, IDC_RAD_SQLAUTH, BN_CLICKED, OnRadAuthClick )
#else
COMMAND_HANDLER( IDC_RAD_WINAUTH, BN_CLICKED, OnRadAuthClick )
COMMAND_HANDLER( IDC_RAD_SQLAUTH, BN_CLICKED, OnRadAuthClick )
#endif
CHAIN_MSG_MAP( CWizPgBase< CWizPgLogin > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgLogin )
DDX_TEXT_LEN( IDC_CBO_SRV, m_szServ, _countof( m_szServ ) )
DDX_CHECK( IDC_CHK_SQLSTART, m_bSqlStart )
// TODO: DDX_RADIO()
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnRadAuthClick( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnCboSqlSrvDropDown( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardNext( void );
public:
BOOL SQLNS_InitializeSqlNs( void );
BOOL SQLDMO_ListSQLServers( void );
BOOL SQLDMO_ConnectToSqlServer( void );
BOOL SQLDMO_IsRemoteServer( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgSelDb : public CWizPgBase< CWizPgSelDb >
, public CWinDataExchange< CWizPgSelDb >
, public CMessageFilter
{
public:
enum DLGID { IDD = IDD_WIZ_SELDB };
public:
TCHAR m_szDbs[ MAX_SQL_STR ];
BOOL m_bSysDb;
CComboBox/*Ex*/ m_cboDbs;
CCheckListViewCtrl m_lstTls;
CToolTipCtrl m_wndTip;
public: // Construction
CWizPgSelDb( void );
~CWizPgSelDb( void );
public: // Maps
BEGIN_MSG_MAP( CWizPgSelDb )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
COMMAND_HANDLER( IDC_CBO_DBS, CBN_DROPDOWN, OnCboSelDbDropDown )
COMMAND_HANDLER( IDC_CBO_DBS, CBN_SELCHANGE, OnCboSelDbCloseUp )
COMMAND_HANDLER( IDC_CHK_SYSDB, BN_CLICKED, OnChkSysDbClick )
COMMAND_HANDLER( IDC_CMD_DBPROP, BN_CLICKED, OnCmdDbPropClick )
CHAIN_MSG_MAP( CWizPgBase< CWizPgSelDb > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgSelDb )
DDX_CONTROL( IDC_LST_TLS, m_lstTls )
//DDX_CONTROL( IDC_LBL_DBPROP, m_lnkDbProp )
DDX_CONTROL_HANDLE( IDC_CBO_DBS, m_cboDbs )
DDX_CHECK( IDC_CHK_SYSDB, m_bSysDb )
// Fix: DDX_Text returns false on dropdown LIST combo when
// setting its text if string is empty and all data exchange fails.
if( bSaveAndValidate )
DDX_TEXT_LEN( IDC_CBO_DBS, m_szDbs, _countof( m_szDbs ) )
else
SetDlgItemText( IDC_CBO_DBS, m_szDbs );
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnCboSelDbDropDown( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnCboSelDbCloseUp( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnChkSysDbClick( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnCmdDbPropClick( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardNext( void );
public: // CMessageFilter
virtual BOOL PreTranslateMessage( IN MSG* pMsg );
public:
void ResetToDefaults( void );
INT GetCheckedTlsCount( void );
public:
BOOL SQLNS_ShowDatabaseProperties( void );
BOOL SQLDMO_EnumDatabases( void );
BOOL SQLDMO_EnumTransactionLogs( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgTasks : public CWizPgBase< CWizPgTasks >
, public CWinDataExchangeEx< CWizPgTasks >
{
public:
enum DLGID { IDD = IDD_WIZ_TASKS };
public:
BOOL m_bJob;
BOOL m_bShrink;
BOOL m_bBackup;
BOOL m_bAppBk;
INT m_nShrinkSize;
public: // Construction
CWizPgTasks( void );
public: // Maps
BEGIN_MSG_MAP( CWizPgTasks )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
#if defined( _ATL_VER ) && ( _ATL_VER >= _ATL_VER_70 )
COMMAND_RANGE_CODE_HANDLER( IDC_RAD_APPBK, IDC_RAD_SQLBK, BN_CLICKED, OnRadBkMethodClick )
#else
COMMAND_HANDLER( IDC_RAD_APPBK, BN_CLICKED, OnRadBkMethodClick )
COMMAND_HANDLER( IDC_RAD_SQLBK, BN_CLICKED, OnRadBkMethodClick )
#endif
COMMAND_HANDLER( IDC_CHK_BACKUP, BN_CLICKED, OnChkBkClick )
CHAIN_MSG_MAP( CWizPgBase< CWizPgTasks > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgTasks )
DDX_CHECK( IDC_CHK_JOB, m_bJob )
DDX_CHECK( IDC_CHK_SHRINK, m_bShrink )
DDX_CHECK( IDC_CHK_BACKUP, m_bBackup )
DDX_INT_RANGE( IDC_TXT_SIZE, m_nShrinkSize, MIN_TL_SIZE, MAX_TL_SIZE )
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnRadBkMethodClick( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnChkBkClick( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardNext( void );
public:
void ResetToDefaults( void );
void ConfigureBackupOptions( void );
};
/////////////////////////////////////////////////////////////////////////////
class CDropListViewCtrl : public CWindowImpl< CDropListViewCtrl, CListViewCtrl >
{
public:
BEGIN_MSG_MAP( CDropListViewCtrl )
MESSAGE_HANDLER( WM_DROPFILES, OnDropFiles )
END_MSG_MAP()
public:
LRESULT OnDropFiles( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, IN BOOL& bHandled )
{
bHandled = ( FALSE );
return ::SendMessage( ::GetParent( m_hWnd ), uMsg, wParam, lParam );
}
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgBackup : public CWizPgBase< CWizPgBackup >
, public CWinDataExchange< CWizPgBackup >
, public CMessageFilter
{
public:
enum DLGID { IDD = IDD_WIZ_BACKUP };
public: // Vars
LPTSTR m_pszBkFiles;
BOOL m_bBkVerify;
TCHAR m_szBkMedia[ MAX_SQL_STR ];
TCHAR m_szBkName [ MAX_SQL_STR ];
TCHAR m_szBkDesc [ MAX_SQL_STR ];
CToolTipCtrl m_wndTip;
CDropListViewCtrl m_lstBk;
public: // Toolbar
// static INT s_aTbi[ 3 ];
// CImageList m_imlIco;
// TBBUTTON* m_pTbb;
// CToolBarCtrl m_wndTlb;
// BOOL CreateToolbar( void );
public: // Construction
CWizPgBackup( void );
~CWizPgBackup( void );
public: // Maps
BEGIN_MSG_MAP( CWizPgBackup )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
MESSAGE_HANDLER( WM_DROPFILES, OnDropFiles )
COMMAND_ID_HANDLER( IDC_CMD_BKADD, OnCmdAdd )
COMMAND_ID_HANDLER( IDC_CMD_BKDEL, OnCmdRemove )
COMMAND_ID_HANDLER( IDC_CMD_BKPROP, OnCmdProp )
CHAIN_MSG_MAP( CWizPgBase< CWizPgBackup > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgBackup )
DDX_CONTROL( IDC_LST_BKFILES, m_lstBk )
DDX_TEXT_LEN( IDC_TXT_BKNAME, m_szBkName, _countof( m_szBkName ) )
DDX_TEXT_LEN( IDC_TXT_BKDESC, m_szBkDesc, _countof( m_szBkDesc ) )
DDX_CHECK( IDC_CHK_BKVER, m_bBkVerify )
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnDropFiles( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnCmdAdd( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnCmdRemove( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
LRESULT OnCmdProp( IN WORD /*wNotifyCode*/, IN WORD /*wID*/, IN HWND /*hWndCtl*/, OUT BOOL& /*bHandled*/ );
public: // CMessageFilter
virtual BOOL PreTranslateMessage( IN MSG* pMsg );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardNext( void );
public:
void AutosizeListColumns( void );
INT FindItemPath( IN LPCTSTR pszPath );
BOOL GetItemPath( IN INT nItem, IN OUT LPTSTR pszPath );
BOOL AddFile( IN LPTSTR pszFilePath );
BOOL FormatAndValidateFile( IN LPTSTR pszFilePath );
public:
BOOL SQLDMO_FormatMediaSetData( void );
BOOL SQLDMO_VerifyBackupMediaSet( void );
public:
void ResetToDefaults( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgReady : public CWizPgBase< CWizPgReady >
{
public:
enum DLGID { IDD = IDD_WIZ_READY };
public: // Construction
CWizPgReady( void );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardBack( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgShrink : public CWizPgBase< CWizPgShrink >
, public CWinDataExchange< CWizPgShrink >
{
public:
enum DLGID { IDD = IDD_WIZ_SHRINK };
public:
CProgressBarCtrl m_wndPrgAll;
CProgressBarCtrl m_wndPrgCur;
public: // Construction
CWizPgShrink( void );
public: // Maps
DECLARE_WNDMSG( WM_SETACTIVE );
BEGIN_MSG_MAP( CWizPgShrink )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
MESSAGE_HANDLER( WM_SETACTIVE, OnAfterSetActive )
MESSAGE_HANDLER( IBackupSink::WM_SQLDMO_BACKUPPERCCOMPLETE, OnBackupPercentComplete )
MESSAGE_HANDLER( IBackupSink::WM_SQLDMO_BACKUPNEXTMEDIA, OnBackupNextMedia )
CHAIN_MSG_MAP( CWizPgBase< CWizPgShrink > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgShrink )
DDX_CONTROL_HANDLE( IDC_PRG_ALL, m_wndPrgAll )
DDX_CONTROL_HANDLE( IDC_PRG_CUR, m_wndPrgCur )
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
public: // Sink and custom handlers
LRESULT OnBackupPercentComplete( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnBackupNextMedia( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnAfterSetActive( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
INT OnWizardNext( void );
public:
void ResetToDefaults( void );
INT CountOverallSteps( void );
public: // SQLDMO
HRESULT SQLDMO_ShrinkTransactionLogs( IN SQLDMO::_SQLServer2Ptr& spSqlServer2 );
HRESULT SQLDMO_StartJobServer( IN SQLDMO::_SQLServer2Ptr& spSqlServer2, IN SQLDMO::JobServerPtr& spJobServer );
HRESULT SQLDMO_CreateJob( IN SQLDMO::_SQLServer2Ptr& spSqlServer2, IN SQLDMO::JobServerPtr& spJobServer, IN SQLDMO::_JobPtr& spJob );
HRESULT SQLDMO_CreateJobSteps( IN SQLDMO::_JobPtr& spJob );
HRESULT SQLDMO_CreateAlert( IN SQLDMO::JobServerPtr& spJobServer, IN SQLDMO::_JobPtr& spJob );
//HRESULT SQLDMO_StartServerAgentJob( IN SQLDMO::JobServerPtr& spJobServer, IN SQLDMO::_JobPtr& spJob, IN BOOL* pbDbcsErrors );
HRESULT SQLDMO_BackupDatabase( IN SQLDMO::_SQLServer2Ptr& spSqlServer2, IN SQLDMO::_Backup2Ptr& spBackup2 );
HRESULT SQLDMO_VerifyBackupMediaSet( IN SQLDMO::_SQLServer2Ptr& spSqlServer2, IN SQLDMO::_Backup2Ptr& spBackup2 );
HRESULT SQLNS_InvokeDatabaseBackup( void );
};
/////////////////////////////////////////////////////////////////////////////
class CWizPgFinish : public CWizPgBase< CWizPgFinish >
, public CWinDataExchange< CWizPgFinish >
{
public:
enum DLGID { IDD = IDD_WIZ_FINISH };
public:
CListViewCtrl m_lstTls;
public: // Construction
CWizPgFinish( void );
public:
DECLARE_WNDMSG( WM_SETACTIVE );
BEGIN_MSG_MAP( CWizPgFinish )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
MESSAGE_HANDLER( WM_SETACTIVE, OnAfterSetActive )
CHAIN_MSG_MAP( CWizPgBase< CWizPgFinish > )
END_MSG_MAP()
BEGIN_DDX_MAP( CWizPgShrink )
DDX_CONTROL_HANDLE( IDC_LST_TLS, m_lstTls )
END_DDX_MAP()
public: // Window notification handlers
LRESULT OnInitDialog( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
LRESULT OnAfterSetActive( IN UINT /*uMsg*/, IN WPARAM /*wParam*/, IN LPARAM /*lParam*/, IN BOOL& /*bHandled*/ );
public: // Wizard notification handlers
BOOL OnSetActive( void );
BOOL OnWizardFinish( void );
public:
BOOL SQLDMO_EnumTransactionLogs( void );
public:
void ResetToDefaults( void );
};
/////////////////////////////////////////////////////////////////////////////
#endif // __TLSWA_WIZPG_H__
/////////////////////////////////////////////////////////////////////////////