#if !defined(AFX_PRODUCTINFOCTL_H__3C80DDD3_C4A3_11D6_A856_005056403737__INCLUDED_)
#define AFX_PRODUCTINFOCTL_H__3C80DDD3_C4A3_11D6_A856_005056403737__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// ProductInfoCtl.h : Declaration of the CProductInfoCtrl ActiveX Control class.

/////////////////////////////////////////////////////////////////////////////
// CProductInfoCtrl : See ProductInfoCtl.cpp for implementation.

class CProductInfoCtrl : public COleControl
{
	DECLARE_DYNCREATE(CProductInfoCtrl)

// Constructor
public:
	CProductInfoCtrl();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CProductInfoCtrl)
	public:
	virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
	virtual void DoPropExchange(CPropExchange* pPX);
	virtual void OnResetState();
	virtual DWORD GetControlFlags();
	//}}AFX_VIRTUAL

// Implementation
protected:
	~CProductInfoCtrl();

	DECLARE_OLECREATE_EX(CProductInfoCtrl)    // Class factory and guid
	DECLARE_OLETYPELIB(CProductInfoCtrl)      // GetTypeInfo
	DECLARE_PROPPAGEIDS(CProductInfoCtrl)     // Property page IDs
	DECLARE_OLECTLTYPE(CProductInfoCtrl)		// Type name and misc status

// Message maps
	//{{AFX_MSG(CProductInfoCtrl)
		// NOTE - ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

// Dispatch maps
	//{{AFX_DISPATCH(CProductInfoCtrl)
	afx_msg short PortSet(LPCTSTR IPAddress, long DataRate, short DataBits, LPCTSTR Parity, short StopBits, LPCTSTR FlowControl);
	afx_msg short Open(LPCTSTR IPAddress);
	afx_msg BOOL Close();
	afx_msg BSTR GetMode(LPCTSTR ModeName);
	afx_msg BOOL SetMode(LPCTSTR ModeName, LPCTSTR ModeValue);
	afx_msg BOOL Commit();
	afx_msg BOOL Restart();
	afx_msg short GetModeSize(LPCTSTR ModeName);
	afx_msg BSTR GetModeType(LPCTSTR ModeName);
	afx_msg BSTR GetFirstModeName();
	afx_msg BSTR GetNextModeName();
	afx_msg BSTR GetModeHelp(LPCTSTR ModeName);
	afx_msg short GetLastError();
	afx_msg BSTR GetNVRamMode(LPCTSTR ModeName);
  afx_msg void SendTerminate();
  afx_msg BOOL SendModeSet(LPCTSTR ModeName, LPCTSTR ModeValue);
  afx_msg BSTR SendModeQuery(LPCTSTR ModeName);
  afx_msg BOOL SendRegistration(); 
	afx_msg BOOL SendDataNOP();
	afx_msg BOOL SendImageToDisplay(LPCTSTR File);
	afx_msg BOOL SendFile(LPCTSTR File, LPCTSTR TargetFileName);
	afx_msg BOOL SendDisplayText(LPCTSTR Text);
	afx_msg BOOL SendSpecialText(LPCTSTR Text);
	afx_msg BOOL Push(LPCTSTR IPAddress, LPCTSTR File, LPCTSTR TargetFileName);
	afx_msg short ReOpen(LPCTSTR IPAddress);
	//}}AFX_DISPATCH
	DECLARE_DISPATCH_MAP()

// Event maps
	//{{AFX_EVENT(CProductInfoCtrl)
	//}}AFX_EVENT
	DECLARE_EVENT_MAP()

// Dispatch and event IDs
public:
	enum {
	//{{AFX_DISP_ID(CProductInfoCtrl)
	dispidPortSet = 1L,
	dispidOpen = 2L,
	dispidClose = 3L,
	dispidGetMode = 4L,
	dispidSetMode = 5L,
	dispidCommit = 6L,
	dispidRestart = 7L,
	dispidGetModeSize = 8L,
	dispidGetModeType = 9L,
	dispidGetFirstModeName = 10L,
	dispidGetNextModeName = 11L,
	dispidGetModeHelp = 12L,
	dispidGetLastError = 13L,
	dispidGetNVRamMode = 14L,
	dispidSendTerminate = 15L,
	dispidSendModeSet = 16L,
	dispidSendModeQuery = 17L,
	dispidSendRegistration = 18L,
	dispidSendDataNOP = 19L,
	dispidSendImageToDisplay = 20L,
	dispidSendFile = 21L,
	dispidSendDisplayText = 22L,
	dispidSendSpecialText = 23L,
	dispidPush = 24L,
	dispidReOpen = 25L,
	//}}AFX_DISP_ID
	};
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PRODUCTINFOCTL_H__3C80DDD3_C4A3_11D6_A856_005056403737__INCLUDED)
