// DlgProxy.cpp : implementation file
//

#include "stdafx.h"
#include "SerwerAutomatyzacji.h"
#include "DlgProxy.h"
#include "SerwerAutomatyzacjiDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CSerwerAutomatyzacjiDlgAutoProxy

IMPLEMENT_DYNCREATE(CSerwerAutomatyzacjiDlgAutoProxy, CCmdTarget)

CSerwerAutomatyzacjiDlgAutoProxy::CSerwerAutomatyzacjiDlgAutoProxy()
{
	EnableAutomation();
	
	// To keep the application running as long as an automation 
	//	object is active, the constructor calls AfxOleLockApp.
	AfxOleLockApp();

	// Get access to the dialog through the application's
	//  main window pointer.  Set the proxy's internal pointer
	//  to point to the dialog, and set the dialog's back pointer to
	//  this proxy.
	ASSERT_VALID(AfxGetApp()->m_pMainWnd);
	if (AfxGetApp()->m_pMainWnd)
	{
		ASSERT_KINDOF(CSerwerAutomatyzacjiDlg, AfxGetApp()->m_pMainWnd);
		if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(CSerwerAutomatyzacjiDlg)))
		{
			m_pDialog = reinterpret_cast<CSerwerAutomatyzacjiDlg*>(AfxGetApp()->m_pMainWnd);
			m_pDialog->m_pAutoProxy = this;
		}
	}
}

CSerwerAutomatyzacjiDlgAutoProxy::~CSerwerAutomatyzacjiDlgAutoProxy()
{
	// To terminate the application when all objects created with
	// 	with automation, the destructor calls AfxOleUnlockApp.
	//  Among other things, this will destroy the main dialog
	if (m_pDialog != NULL)
		m_pDialog->m_pAutoProxy = NULL;
	AfxOleUnlockApp();
}

void CSerwerAutomatyzacjiDlgAutoProxy::OnFinalRelease()
{
	// When the last reference for an automation object is released
	// OnFinalRelease is called.  The base class will automatically
	// deletes the object.  Add additional cleanup required for your
	// object before calling the base class.

	CCmdTarget::OnFinalRelease();
}

BEGIN_MESSAGE_MAP(CSerwerAutomatyzacjiDlgAutoProxy, CCmdTarget)
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CSerwerAutomatyzacjiDlgAutoProxy, CCmdTarget)
    DISP_FUNCTION_ID(CSerwerAutomatyzacjiDlgAutoProxy, "Clear", dispidClear, Clear, VT_EMPTY, VTS_NONE)
    DISP_PROPERTY_EX_ID(CSerwerAutomatyzacjiDlgAutoProxy, "Position", dispidPosition, GetPosition, SetPosition, VT_I4)
END_DISPATCH_MAP()

// Note: we add support for IID_ISerwerAutomatyzacji to support typesafe binding
//  from VBA.  This IID must match the GUID that is attached to the 
//  dispinterface in the .IDL file.

// {1DB46B7F-60CC-4D19-868E-0043AC527B74}
static const IID IID_ISerwerAutomatyzacji =
{ 0x1DB46B7F, 0x60CC, 0x4D19, { 0x86, 0x8E, 0x0, 0x43, 0xAC, 0x52, 0x7B, 0x74 } };

BEGIN_INTERFACE_MAP(CSerwerAutomatyzacjiDlgAutoProxy, CCmdTarget)
	INTERFACE_PART(CSerwerAutomatyzacjiDlgAutoProxy, IID_ISerwerAutomatyzacji, Dispatch)
END_INTERFACE_MAP()

// The IMPLEMENT_OLECREATE2 macro is defined in StdAfx.h of this project
// {56F4CD79-87E7-49E5-96D3-670EDAF4CF15}
IMPLEMENT_OLECREATE2(CSerwerAutomatyzacjiDlgAutoProxy, "SerwerAutomatyzacji.Application", 0x56f4cd79, 0x87e7, 0x49e5, 0x96, 0xd3, 0x67, 0xe, 0xda, 0xf4, 0xcf, 0x15)


// CSerwerAutomatyzacjiDlgAutoProxy message handlers

void CSerwerAutomatyzacjiDlgAutoProxy::Clear(void)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());

    int min, max;
    
    m_pDialog->Progress1.GetRange(min, max);
    m_pDialog->Progress1.SetPos(min);
}

LONG CSerwerAutomatyzacjiDlgAutoProxy::GetPosition(void)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());
    
    try
    {
        return m_pDialog->Progress1.GetPos();
    }
    catch(CException &c)
    {
        c.ReportError();
        c.Delete();
    }

    return 0;
}

void CSerwerAutomatyzacjiDlgAutoProxy::SetPosition(LONG newVal)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());

    try
    {
        m_pDialog->Progress1.SetPos(newVal); 
    }
    catch(CException &c)
    {
        c.ReportError();
        c.Delete();
    }
}
