#pragma once #include #include #define OFFSET_LIST_GRID_ROW_COUNT 1 #define OFFSET_LIST_GRID_COL_COUNT 3 #define FIXCELLCOLOR RGB(255, 102, 178) #define NOFIXCELLCOLOR RGB(240, 240, 240) #define MINCELLCOLOR RGB(204, 204, 255) #define MAXCELLCOLOR RGB(204, 255, 204) #define MOTOR_OFFSET_CONFIGFILE_DEFAULT_NAME _T("MotorOffset") #define MOTOR_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup") #define MOTOR_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffset\\OffsetBackup\\") #define GRID_ROW_START_POINT 2 #define GRID_COL_START_POINT 2 interface IDialogMotorOffSet2Parent { virtual BOOL IDMO2P_GetMotorPos(int nModule, double &dXpos, double &dYpos) = 0; }; struct MotorOffSetInfo { double dXoffSetValue; double dYoffSetValue; MotorOffSetInfo() { dXoffSetValue = 0; dYoffSetValue = 0; } bool operator==(const MotorOffSetInfo& input) const { return 0 == memcmp(&input, this, sizeof(MotorOffSetInfo)); } }; typedef std::vector VecMotorOffSetData; class CMotorOffsetData { public: CMotorOffsetData() { ; } ~CMotorOffsetData() { ; } // Defect Review BOOL CalcOffset(_Inout_ double& GlassPosX, _Inout_ double& GlassPos); // Setting Dlg void SetRangeCountX(_In_ unsigned int nCount); void SetRangeCountY(_In_ unsigned int nCount); BOOL SetRangeX(_In_ unsigned int nIdx, _In_ double fX); BOOL SetRangeY(_In_ unsigned int nIdx, _In_ double fY); int GetRangeCountX(); int GetRangeCountY(); double GetRangeX(_In_ unsigned int nIdx); double GetRangeY(_In_ unsigned int nIdx); BOOL SetOffsetValue(_In_ unsigned int nXIndex, _In_ unsigned int nYIndex, _In_ MotorOffSetInfo pOffsetInfo); MotorOffSetInfo GetOffsetValue(_In_ int nXIndex, _In_ int nYIndex); // File Access BOOL WriteConfigFile(int nIdx); BOOL ReadConfigFile(int nIdx); //Read Func BOOL LoadInfo(CString strFilePath, int nIdx); bool operator==(const CMotorOffsetData& input) const { if (this->m_vtXRange == input.m_vtXRange) { if (this->m_vtYRange == input.m_vtYRange) { if (this->m_mapOffsetInfo == input.m_mapOffsetInfo) { return TRUE; } } } else FALSE; } protected: std::vector m_vtXRange; std::vector m_vtYRange; std::map> m_mapOffsetInfo; // > private: }; typedef std::map MapMotorOffSetInfo; class CDlgMotorOffSetTool : public CDialogEx { DECLARE_DYNAMIC(CDlgMotorOffSetTool) public: CDlgMotorOffSetTool(CWnd* pParent = nullptr); // 표준 생성자입니다. virtual ~CDlgMotorOffSetTool(); // 대화 상자 데이터입니다. #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DLG_MOTOR_OFFSET_TOOL }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다. DECLARE_MESSAGE_MAP() public: virtual BOOL OnInitDialog(); afx_msg void OnBnClickedOK(); afx_msg void OnBnClickedCancel(); afx_msg void OnXCountKillFocus(); afx_msg void OnYCountKillFocus(); void InitOffSetInfoGridControl(); void SetColorType(); void InitProcess(); void UpdateGridcontrol(); void SetDMO2P(IDialogMotorOffSet2Parent* pDMO2P) { m_pDMO2P = pDMO2P; } BOOL CalOffsetInfo(int nModuleIdx, double &XPos, double &YPos); ////////////============================== void ApplyOffSetInfo(); //Grid -> Map //////////================================ protected: CRITICAL_SECTION m_csMapSafer; COLORTYPE Color[10]; int m_nEditXposCount; int m_nEditYposCount; // 설비별 Offset int m_nCurOffsetModuleIdx; public: CGridCtrl m_ctrlGridMotorOffSetInfo; IDialogMotorOffSet2Parent* m_pDMO2P; MapMotorOffSetInfo m_mapMotorOffsetInfo; MapMotorOffSetInfo m_mapMotorOffsetInfo_OLD; CComboBox m_ctrlCmbModuleIdx; afx_msg void OnSelchangeComboMotorOffsetModuleidx(); };