2025-04-27 07:49:33 -04:00

145 lines
3.2 KiB
C++

// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
// DlgDownload.cpp : implementation file
//
#include "precomp.h"
#include "singleview.h"
#include <afxcmn.h>
#include "DlgDownload.h"
#include "winerror.h"
#include "urlmon.h"
#include "download.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgDownload dialog
CDlgDownload::CDlgDownload(CWnd* pParent /*=NULL*/)
: CDialog(CDlgDownload::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgDownload)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pParams = NULL;
m_pDownload = NULL;
}
CDlgDownload::~CDlgDownload()
{
delete m_pParams;
delete m_pDownload;
}
void CDlgDownload::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgDownload)
DDX_Control(pDX, IDC_PROGRESS, m_progress);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgDownload, CDialog)
//{{AFX_MSG_MAP(CDlgDownload)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgDownload message handlers
void CDlgDownload::OnCancel()
{
// TODO: Add extra cleanup here
if (m_pDownload) {
m_pDownload->UserCancelled();
}
else {
CDialog::OnCancel();
}
}
BOOL CDlgDownload::OnInitDialog()
{
CDialog::OnInitDialog();
m_progress.SetRange(0, 1);
m_progress.SetPos( 0);
m_pDownload = new CDownload();
SCODE sc;
sc = m_pDownload->DoDownload(m_pParams);
if (sc != S_ASYNCHRONOUS) {
EndDialog(IDOK);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//**************************************************************
// CDlgDownload::DoDownload
//
// This method initiates the downloading of a custom view. It
// stores all the parameters describing the component to download
// as member data, then calls DoDialog. OnInitDialog completes
// the downloading process.
//
// Parameters:
// [out] LPUNKNOWN& punk
// The instance pointer for the custom view is returned here.
//
// [in] REFCLSID clsid
// The class id of the custom view.
//
// [in] LPCWSTR szCodebase
// The codebase describing the location of the custom view OCX file.
//
// [in] DWORD dwFileVersionMS
// The most significant word of the version number.
//
// [in] DWORD dwFileVersionLS
// The least significant word of the version number.
//
//
// Returns:
// Nothing.
//
//**************************************************************
SCODE CDlgDownload::DoDownload(LPUNKNOWN& punk, REFCLSID clsid, LPCWSTR szCodebase, DWORD dwFileVersionMS, DWORD dwFileVersionLS)
{
if (!m_pParams) {
m_pParams = new CDownloadParams;
}
m_pParams->m_sc = S_OK;
m_pParams->m_pdlg = this;
m_pParams->m_clsid = clsid;
m_pParams->m_szCodebase = szCodebase;
m_pParams->m_dwFileVersionMS = dwFileVersionMS;
m_pParams->m_dwFileVersionLS = dwFileVersionLS;
CWnd* pwndFocus = GetFocus();
DoModal();
if (pwndFocus) {
pwndFocus->SetFocus();
}
punk = m_pParams->m_punk;
return m_pParams->m_sc;
}