SDC C-Project CF Review 프로그램
LYW
2021-08-10 8ac7359b04409c2a1426f9a179c00b1c966d0146
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#pragma once
#include "DlgDeffectHistroy.h"
#include "DlgDefectHistoryMap.h"
#include "DlgAlignHistory.h"
 
typedef std::vector<CWnd*>                VectorWndPtr;
typedef std::vector<CWnd*>::iterator    VectorWndPtrIt;
 
typedef std::vector<CString>                    VectorString;
typedef std::vector<CString>::iterator            VectorStringIt;
typedef std::vector<CString>::const_iterator    constVectorStringIt;
 
// CDlgReviewHistoryTool 대화 상자
interface IDialogReviewHistory2Parent
{
    virtual CGlassResult*                ISP2P_GetNewHistoryResult(int& nHistoryResultCount) = 0;    // new glass result
    virtual CGlassResult*                ISP2P_GetHistoryResult(int nIndex) = 0;                    // get glass result
    virtual SDefectFilter*                ISP2P_GetDefectFilter() = 0;
    virtual void    DDM2P_SelectDefect2(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY, CGlassResult* pHistoryResult) = 0;
};
 
class CDlgReviewHistoryTool : public CDialogEx, public IDialogDefectHistoryList2Parent,public IDialogDefectHistoryMap2Parent,public IDialogAlignHistoryList2Parent
{
    DECLARE_DYNAMIC(CDlgReviewHistoryTool)
 
public:
    CDlgReviewHistoryTool(CWnd* pParent = nullptr);   // 표준 생성자입니다.
    virtual ~CDlgReviewHistoryTool();
 
protected:
    IDialogReviewHistory2Parent* m_pDDL2P;
 
// 대화 상자 데이터입니다.
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DLG_REVIEW_HISTORY_TOOL };
#endif
 
protected: 
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 지원입니다.
    void SetDefectImage(CString strReview, CGlassResult* pHistoryResult);
    void UpdateSelectDefectMap(CDefectResult* pDefectResult);
    void SetDefectIndexInfo(int nIndex);
    void DefectnoImage();
    int     GetDefectIndex() { return m_nDefectIndex; }
    void SetReviewName(CString strReviewName) { m_strReviewName = strReviewName; }
    void DrawnoImage();
    void AlignnoImage();
 
    DECLARE_MESSAGE_MAP()
 
public:
    CDlgDeffectHistroy*        m_pDlgDefectHistory;
    CDlgDefectHistoryMap*    m_pDlgDefectHistoryMap;
    CDlgAlignHistory*        m_pDlgAlignHistory;
 
    CDefectResult* pDefectInfo = NULL;
    bool m_bHistory;
 
protected:
    VectorWndPtr    m_vecWndPtr;
    VectorString    m_vecString;
    const MapDefectResult*        m_pMapDefectResult;
    const SDefectFilter*        m_pDefectFilter;
 
    int m_nDefectIndex;
    CString m_strReviewName;
    HICON m_hIcon;
    int m_DefectIdx;
    double m_dDefectReviewPosX;
    double m_dDefectReviewPosY;
    double m_dDefectAoiPosX;
    double m_dDefectAoiPosY;
    CString m_dDefectSizeType;
    int m_dDefectSacnIdx;
    int m_dDefectCamIdx;
    CString m_dDefectAOIFileName;
 
    CStatic m_PictureControl_AOI;
    CStatic m_PictureControl_Review;
 
    CStatic m_PictureControl_Align;
    CStatic m_PictureControl_Align2;
 
    int m_dDefectArea;
    CRect m_picture_rect;
    CRect m_picture_rect2;
 
    CRect m_picture_rect3;
    CRect m_picture_rect4;
 
    CImage m_DefectImage;
    CImage m_ReviewImage;
 
    CImage m_AlignImage;
    CImage m_AlignImage2;
 
    CGridCtrl m_ctrlOriginInfo;
    CGridCtrl m_ctrlAlignInfo;
 
    CString m_strFirstImage;
    CString m_strSecondImage;
 
public:
    void SetDDL2P(IDialogReviewHistory2Parent* pDDL2P) { m_pDDL2P = pDDL2P; }
    CListBox m_ctrlHistoryList;
    afx_msg void OnBnClickedOk();
    virtual BOOL OnInitDialog();
    virtual    BOOL UpdateSelectDefectInfoMap2(int nIndex);
    virtual    BOOL UpdateSelectDefectInfoMap3(int nIndex);
    virtual void SelectDefect(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY);
    virtual BOOL Mathching(CDefectResult* pDefectResult);
    void UpdateProcess(const CGlassResult* pGlassResult);
    void OnDblclkList1();
    afx_msg void OnSelchangeList1();
    void SetSelectIndex(int nSelectIdx) { m_nSelectCount = nSelectIdx; }
    int GetSelectIndex() { return m_nSelectCount; }
    void SetSelectDefectIndex(int nSelectIdx) { m_nSelectDefectIndex = nSelectIdx; }
    int GetSelectDefectIndex() { return m_nSelectDefectIndex; }
    void UpdateDefectFilter(const SDefectFilter* pDefectFilter);
    void CreateTabDlg();
    void InitTabControl();
    void UpdateSelectDefectMap2(CDefectResult* pDefectResult);
    void UpdateSelect(CDefectResult* pDefectResult);
    CString GetReviewName() { return m_strReviewName; }
    
    int m_nListCount = 0;
    int m_nSelectCount = 0; 
    int m_nSelectDefectIndex = 0;
    BOOL m_bAllDefect = 0;
    CTabCtrl m_ctrlHistoryTab;
    afx_msg void OnSelchangeTabHistoryControl(NMHDR *pNMHDR, LRESULT *pResult);
 
    void SetActiveDialog(int nTabIdx);
       
public:
    void GetHistoryList();
    void SetHistoryTemp(int nIndex);
    void SetAllDefect(BOOL bCheck) { m_bAllDefect = bCheck; }
    virtual BOOL GetAllDefect() { return m_bAllDefect; }
    CStatic m_ctrlDefectMap;
    CGlassResult* m_pHistoryTemp;
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    afx_msg void OnPaint();
    afx_msg void OnBnClickedUseDefect();
    afx_msg void OnBnClickedImageRotation();
    afx_msg void OnBnClickedImageFlip();
    void InitGridOriginInfo();
    void InitGridAlignInfo();
};