// MonitoringHostSampleDlg.h : header file
//
// created by Unwinder
/////////////////////////////////////////////////////////////////////////////
#ifndef _MONITORINGHOSTSAMPLEDLG_H_INCLUDED_
#define _MONITORINGHOSTSAMPLEDLG_H_INCLUDED_
/////////////////////////////////////////////////////////////////////////////
#include <afxtempl.h>
#include "MonitoringSourceDesc.h"
/////////////////////////////////////////////////////////////////////////////
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// define types of functions exported by monitoring plugins
/////////////////////////////////////////////////////////////////////////////
typedef DWORD	(*GET_SOURCES_NUM_PROC	)();
typedef BOOL	(*GET_SOURCE_DESC_PROC	)(DWORD, LPMONITORING_SOURCE_DESC);
typedef FLOAT	(*GET_SOURCE_DATA_PROC	)(DWORD);
typedef BOOL	(*SETUP_SOURCE_PROC		)(DWORD, HWND);
/////////////////////////////////////////////////////////////////////////////
// CMonitoringHostSampleDlg dialog
/////////////////////////////////////////////////////////////////////////////
typedef struct MONITORING_PLUGIN_DESC 
{
	char					szPath[MAX_PATH];
	DWORD					dwIndex;
	MONITORING_SOURCE_DESC	SourceDesc;
} MONITORING_PLUGIN_DESC, *LPMONITORING_PLUGIN_DESC; 
/////////////////////////////////////////////////////////////////////////////
class CMonitoringHostSampleDlg : public CDialog
{
// Construction
public:
	CMonitoringHostSampleDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CMonitoringHostSampleDlg)
	enum { IDD = IDD_MONITORINGHOSTSAMPLE_DIALOG };
	CComboBox	m_pluginsCombo;
	CString	m_strStatus;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMonitoringHostSampleDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	void InitPluginsList();
	void UninitPluginsList();
	void InitPluginsCombo();
	void LoadPlugin();
	void UnloadPlugin();
	void UpdateStatus();

	HICON						m_hIcon;
	LPMONITORING_PLUGIN_DESC	m_pPluginDesc;
	HMODULE						m_hPlugin;
	GET_SOURCE_DATA_PROC		m_pGetSourceData;
	UINT						m_nTimerID;

	CList<LPMONITORING_PLUGIN_DESC, LPMONITORING_PLUGIN_DESC> m_pluginsList;

	// Generated message map functions
	//{{AFX_MSG(CMonitoringHostSampleDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnDestroy();
	afx_msg void OnSelchangePluginsCombo();
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
/////////////////////////////////////////////////////////////////////////////
#endif
/////////////////////////////////////////////////////////////////////////////
