// RobotDlg.h : ヘッダー ファイル
//

#if !defined(AFX_ROBOTDLG_H__99E5DBF3_B483_48D5_B52F_5ED135047AE0__INCLUDED_)
#define AFX_ROBOTDLG_H__99E5DBF3_B483_48D5_B52F_5ED135047AE0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <atlbase.h>
#include <afxtempl.h>
#include <afxcoll.h>
#include "CAO.h"

#define ID_TIMER WM_USER + 1

/////////////////////////////////////////////////////////////////////////////
// CRobotDlg ダイアログ

class CRobotDlg : public CDialog
{
// 構築
public:
	CRobotDlg(CWnd* pParent = NULL);	// 標準のコンストラクタ

// ダイアログ データ
	//{{AFX_DATA(CRobotDlg)
	enum { IDD = IDD_ROBOT_DIALOG };
		// メモ: この位置に ClassWizard によってデータ メンバが追加されます。
	//}}AFX_DATA

	// ClassWizard は仮想関数のオーバーライドを生成します。
	//{{AFX_VIRTUAL(CRobotDlg)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV のサポート
	//}}AFX_VIRTUAL

private:
	CComPtr<ICaoEngine>			m_pIEng;
	CComPtr<ICaoWorkspaces>		m_pIWss;
	CComPtr<ICaoWorkspace>		m_pIWs;
	CComPtr<ICaoControllers>	m_pICtrls;
	CComPtr<ICaoVariable>		m_pIBusyStatusVariable;
	CComPtr<ICaoVariable>		m_pICurrentPositionVariable;

	CComboBox					m_cmbParam;

	CComboBox					m_cmbComp;
	CComboBox					m_cmbPath;
	CComboBox					m_cmbType;
	int							m_editVarIndex;
	CButton						m_optMove;
	CButton						m_cmdGo;

	CComboBox					m_cmbChange;
	int							m_editChange;
	CButton						m_cmdChange;

	float						m_editAccel;
	CButton						m_cmdAccel;

	float						m_editDecel;
	CButton						m_cmdDecel;

	float						m_editSpeed;
	CButton						m_cmdSpeed;

	CComboBox					m_cmbDrvat;
	CComboBox					m_cmbAxis;
	float						m_editDrive;
	CButton						m_optDrive;
	CButton						m_cmdDrive;

	CComboBox					m_cmb_Rotate;
	CString						m_editRotate[4];
	float						m_editRotdeg;
	CButton						m_optRotate;
	CButton						m_cmdRotate;
	int							m_optSuf;
	CComboBox					m_cmbSuf;

	CComboBox					m_cmbApproachComp;
	CComboBox					m_cmbApproachType;
	int							m_nApproachIndex;
	CComboBox					m_cmbApproachPath;
	float						m_fApproachLength;
	CButton						m_optApproach;

	CComboBox					m_cmbDepartComp;
	CComboBox					m_cmbDepartPath;
	float						m_fDepartLength;
	CButton						m_optDepart;

	CButton						m_cmdCancel;

	CString						m_editExecute;
	CString						m_editReply;
	CButton						m_cmdExecute;

	CComPtr<ICaoController>		GetControllerObject();
	CComPtr<ICaoRobot>			GetRobotObject();
	BOOL						IsRobSlaveRunning();
	BOOL						GetExecuteData(CString str, CComVariant* varData);
	CStringArray*				GetResultDataArray(CComVariant varResult);
	CString						GetResultData(CComVariant varResult);

// インプリメンテーション
protected:
	HICON m_hIcon;

	// 生成されたメッセージ マップ関数
	//{{AFX_MSG(CRobotDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnDestroy();
	afx_msg void OnConnect();
	afx_msg void OnDisconnect();
	afx_msg void OnGo();
	afx_msg void OnChange();
	afx_msg void OnAccel();
	afx_msg void OnDecel();
	afx_msg void OnSpeed();
	afx_msg void OnDrive();
	afx_msg void OnRotate();
	afx_msg void OnApproach();
	afx_msg void OnDepart();
	afx_msg void OnCmdCancel();
	afx_msg void OnExecute();
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。

#endif // !defined(AFX_ROBOTDLG_H__99E5DBF3_B483_48D5_B52F_5ED135047AE0__INCLUDED_)
