392 lines
5.5 KiB
C++
392 lines
5.5 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1994-1998 Microsoft Corporation
|
||
|
|
||
|
Module Name :
|
||
|
|
||
|
defws.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Default Web Site Dialog
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ronald Meijer (ronaldm)
|
||
|
|
||
|
Project:
|
||
|
|
||
|
Internet Services Manager
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
//
|
||
|
// Include Files
|
||
|
//
|
||
|
#include "stdafx.h"
|
||
|
#include "fscfg.h"
|
||
|
#include "defws.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Master Property Page
|
||
|
//
|
||
|
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||
|
|
||
|
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CDefWebSitePage, CInetPropertyPage)
|
||
|
|
||
|
|
||
|
|
||
|
CDefWebSitePage::CDefWebSitePage(
|
||
|
IN CInetPropertySheet * pSheet
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Constructor for WWW Default Web Site page
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
CInetPropertySheet * pSheet : Sheet object
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
N/A
|
||
|
|
||
|
|
||
|
--*/
|
||
|
: CInetPropertyPage(CDefWebSitePage::IDD, pSheet),
|
||
|
m_rgdwInstances()
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CDefWebSitePage)
|
||
|
//}}AFX_DATA_INIT
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
CDefWebSitePage::~CDefWebSitePage()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Destructor
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
N/A
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
N/A
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void
|
||
|
CDefWebSitePage::DoDataExchange(
|
||
|
IN CDataExchange * pDX
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Initialise/Store control data
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
CDataExchange * pDX - DDX/DDV control structure
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
CInetPropertyPage::DoDataExchange(pDX);
|
||
|
|
||
|
//{{AFX_DATA_MAP(CDefWebSitePage)
|
||
|
DDX_Control(pDX, IDC_COMBO_WEBSITES, m_combo_WebSites);
|
||
|
//}}AFX_DATA_MAP
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Message Map
|
||
|
//
|
||
|
BEGIN_MESSAGE_MAP(CDefWebSitePage, CInetPropertyPage)
|
||
|
//{{AFX_MSG_MAP(CDefWebSitePage)
|
||
|
ON_CBN_SELCHANGE(IDC_COMBO_WEBSITES, OnSelchangeComboWebsites)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
|
||
|
|
||
|
HRESULT
|
||
|
CDefWebSitePage::BuildInstanceList()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Build the instance list of friendly instances
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Error return code
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
CWaitCursor wait;
|
||
|
|
||
|
//
|
||
|
// Create interface
|
||
|
//
|
||
|
CMetaKey mk(QueryServerName());
|
||
|
CError err(mk.QueryResult());
|
||
|
if (err.Failed())
|
||
|
{
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Populate combo box with known web sites.
|
||
|
//
|
||
|
ISMINSTANCEINFO ii;
|
||
|
ii.dwSize = sizeof(ISMINSTANCEINFO);
|
||
|
HANDLE hEnum = NULL;
|
||
|
int i = 0;
|
||
|
int iSel = LB_ERR;
|
||
|
|
||
|
FOREVER
|
||
|
{
|
||
|
err = COMDLL_ISMEnumerateInstances(&mk, &ii, &hEnum, g_cszSvc);
|
||
|
if (err.Failed())
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
CString strComment(ii.szComment);
|
||
|
if (strComment.IsEmpty())
|
||
|
{
|
||
|
//
|
||
|
// This should be rare -- an instance without a name
|
||
|
// just use the number.
|
||
|
//
|
||
|
{
|
||
|
CString str;
|
||
|
|
||
|
VERIFY(str.LoadString(IDS_INSTANCE_DEF_FMT));
|
||
|
strComment.Format(
|
||
|
str,
|
||
|
g_cszSvc,
|
||
|
ii.dwID
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
m_combo_WebSites.AddString(strComment);
|
||
|
m_rgdwInstances.Add(ii.dwID);
|
||
|
if (m_dwDownlevelInstance == ii.dwID)
|
||
|
{
|
||
|
//
|
||
|
// This is the current one, remember the selection
|
||
|
//
|
||
|
iSel = i;
|
||
|
}
|
||
|
|
||
|
++i;
|
||
|
}
|
||
|
|
||
|
m_rgdwInstances.FreeExtra();
|
||
|
m_combo_WebSites.SetCurSel(iSel);
|
||
|
|
||
|
if (err.Win32Error() == ERROR_NO_MORE_ITEMS)
|
||
|
{
|
||
|
//
|
||
|
// Normal way to end the loop
|
||
|
//
|
||
|
err.Reset();
|
||
|
}
|
||
|
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
CDefWebSitePage::FetchInstanceSelected()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Based on the selection in the combo box, fetch the instance number
|
||
|
selected.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
The instance number coresponding to the selected instance, or -1.
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
DWORD dwInstance = -1;
|
||
|
|
||
|
int iSel = m_combo_WebSites.GetCurSel();
|
||
|
|
||
|
if (iSel >= 0)
|
||
|
{
|
||
|
dwInstance = m_rgdwInstances[iSel];
|
||
|
}
|
||
|
|
||
|
return dwInstance;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/* virtual */
|
||
|
HRESULT
|
||
|
CDefWebSitePage::FetchLoadedValues()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Move configuration data from sheet to dialog controls
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
HRESULT
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
CError err;
|
||
|
|
||
|
BEGIN_META_INST_READ(CFtpSheet)
|
||
|
FETCH_INST_DATA_FROM_SHEET(m_dwDownlevelInstance);
|
||
|
END_META_INST_READ(err)
|
||
|
|
||
|
m_rgdwInstances.SetSize(0, 10);
|
||
|
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/* virtual */
|
||
|
HRESULT
|
||
|
CDefWebSitePage::SaveInfo()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Save the information on this property page
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Error return code
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
ASSERT(IsDirty());
|
||
|
|
||
|
TRACEEOLID("Saving W3 default web site page now...");
|
||
|
|
||
|
CError err;
|
||
|
|
||
|
m_dwDownlevelInstance = FetchInstanceSelected();
|
||
|
|
||
|
BeginWaitCursor();
|
||
|
BEGIN_META_INST_WRITE(CFtpSheet)
|
||
|
STORE_INST_DATA_ON_SHEET(m_dwDownlevelInstance);
|
||
|
END_META_INST_WRITE(err)
|
||
|
EndWaitCursor();
|
||
|
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Message Handlers
|
||
|
//
|
||
|
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||
|
|
||
|
|
||
|
|
||
|
BOOL
|
||
|
CDefWebSitePage::OnInitDialog()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
WM_INITDIALOG handler. Initialize the dialog.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE if focus is to be set automatically, FALSE if the focus
|
||
|
is already set.
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
CInetPropertyPage::OnInitDialog();
|
||
|
|
||
|
CError err(BuildInstanceList());
|
||
|
err.MessageBoxOnFailure();
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
CDefWebSitePage::OnSelchangeComboWebsites()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
web site combo box 'selection change' handler
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
SetModified(TRUE);
|
||
|
}
|