SDC C-Project CF Review 프로그램
LYW
2021-07-09 527c18879378e6f98d32d36308a2c55e870912b4
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
// CHTrackerView.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù.
//
 
#include "stdafx.h"
#include "CHTrackerView.h"
#include "CHBufferDC.h"
 
// CCHTrackerView
 
IMPLEMENT_DYNAMIC(CCHTrackerView, CCHImageView)
 
CCHTrackerView::CCHTrackerView() : CCHImageView()
{
    m_rectTracker.m_rect = CRect(0,0,0,0);
    m_rectTracker.m_nStyle = CRectTracker::dottedLine | CRectTracker::resizeOutside;
    m_rectTracker.m_sizeMin = CSize(8,8);
    m_bDrawTracker = FALSE;
}
 
 
CCHTrackerView::CCHTrackerView(CWnd *pParentWnd) : CCHImageView(pParentWnd)
{
    m_rectTracker.m_rect = CRect(0,0,0,0);
    m_rectTracker.m_nStyle = CRectTracker::dottedLine | CRectTracker::resizeOutside;
    m_rectTracker.m_sizeMin = CSize(8,8);
    m_bDrawTracker = FALSE;
}
 
CCHTrackerView::~CCHTrackerView()
{
 
}
 
 
BEGIN_MESSAGE_MAP(CCHTrackerView, CCHImageView)
    ON_WM_SETCURSOR()
    ON_WM_PAINT()
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
 
 
 
// CCHTrackerView ¸Þ½ÃÁö Ã³¸®±âÀÔ´Ï´Ù.
 
BOOL CCHTrackerView::GetTrackerRect(CRect& rtRect)
{
    if (m_rectTracker.m_rect.Width()<0 || m_rectTracker.m_rect.Height()<0)
    {
        return FALSE;
    }
 
    rtRect = m_rectTracker.m_rect;
 
    return TRUE;
}
 
void CCHTrackerView::SetTrackerRect(const CRect& rtRect)
{
    m_rectTracker.m_rect = rtRect;
    Invalidate(TRUE);
}
 
void CCHTrackerView::ClearTrackerRect()
{
    m_rectTracker.m_rect = CRect(0,0,0,0);
    Invalidate(TRUE);
}
 
BOOL CCHTrackerView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
    // TODO: ¿©±â¿¡ ¸Þ½ÃÁö Ã³¸®±â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
    if (m_rectTracker.SetCursor(this, nHitTest))
        return TRUE;
 
    return CCHImageView::OnSetCursor(pWnd, nHitTest, message);
}
 
void CCHTrackerView::OnPaint()
{
 
    CCHBufferDC *pDC = new CCHBufferDC(this); // device context for painting
 
    UpdateImageView(pDC);
 
    m_rectTracker.m_rect.NormalizeRect();
 
    if (m_rectTracker.m_rect.left>0 && m_rectTracker.m_rect.right<GetWidth())
    {
        if (m_rectTracker.m_rect.top>0 && m_rectTracker.m_rect.bottom<GetHeight())
        {
            m_rectTracker.Draw(pDC);
        }
    }
 
    delete pDC;
    
}
 
void CCHTrackerView::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: ¿©±â¿¡ ¸Þ½ÃÁö Ã³¸®±â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
 
    if (m_pParentWnd==NULL || !GetImageExist()) return;
 
    if (point.x > -1 && point.x < GetScaleWidth() &&
        point.y > -1 && point.y < GetScaleHeight() )
    {
        if (m_rectTracker.HitTest(point) < 0)
        {
            // just to demonstrate CRectTracker::TrackRubberBand
            if (m_rectTracker.TrackRubberBand(this, point, TRUE))
            {
                Invalidate();
            }
        }
        else if (m_rectTracker.Track(this, point, TRUE))
        {
            Invalidate();
        }
    }
 
    CCHImageView::OnLButtonDown(nFlags, point);
}