-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWeek5_practice5Doc.cpp
More file actions
159 lines (124 loc) · 3.42 KB
/
Copy pathWeek5_practice5Doc.cpp
File metadata and controls
159 lines (124 loc) · 3.42 KB
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
150
151
152
153
154
155
156
157
158
159
// Week5_practice5Doc.cpp: CWeek5practice5Doc 클래스의 구현
//
#include "pch.h"
#include "framework.h"
// SHARED_HANDLERS는 미리 보기, 축소판 그림 및 검색 필터 처리기를 구현하는 ATL 프로젝트에서 정의할 수 있으며
// 해당 프로젝트와 문서 코드를 공유하도록 해 줍니다.
#ifndef SHARED_HANDLERS
#include "Week5_practice5.h"
#endif
#include "Week5_practice5Doc.h"
#include <propkey.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CWeek5practice5Doc
IMPLEMENT_DYNCREATE(CWeek5practice5Doc, CDocument)
BEGIN_MESSAGE_MAP(CWeek5practice5Doc, CDocument)
END_MESSAGE_MAP()
// CWeek5practice5Doc 생성/소멸
CWeek5practice5Doc::CWeek5practice5Doc() noexcept
{
// TODO: 여기에 일회성 생성 코드를 추가합니다.
m_nDocX = 0;
m_nDocY = 0;
// m_nDocColor = _T("");
m_strDocText = _T("");
m_nDocColor = 0;
}
CWeek5practice5Doc::~CWeek5practice5Doc()
{
}
BOOL CWeek5practice5Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: 여기에 재초기화 코드를 추가합니다.
// SDI 문서는 이 문서를 다시 사용합니다.
//20221871_인석진
// Doc 클래스에 선언된 멤버 변수 초기화
m_nDocX = 0;
m_nDocY = 0;
m_strDocText.Empty();
m_nDocColor = 0; // BLACK (0번 인덱스)으로 초기화
return TRUE;
}
// CWeek5practice5Doc serialization
void CWeek5practice5Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 여기에 저장 코드를 추가합니다.
//20221871_인석진
ar << m_nDocX;
ar << m_nDocY;
ar << m_strDocText;
ar << m_nDocColor;
}
else
{
// TODO: 여기에 로딩 코드를 추가합니다.
//20221871_인석진
ar >> m_nDocX;
ar >> m_nDocY;
ar >> m_strDocText;
ar >> m_nDocColor;
}
}
#ifdef SHARED_HANDLERS
// 축소판 그림을 지원합니다.
void CWeek5practice5Doc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
{
// 문서의 데이터를 그리려면 이 코드를 수정하십시오.
dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));
CString strText = _T("TODO: implement thumbnail drawing here");
LOGFONT lf;
CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
pDefaultGUIFont->GetLogFont(&lf);
lf.lfHeight = 36;
CFont fontDraw;
fontDraw.CreateFontIndirect(&lf);
CFont* pOldFont = dc.SelectObject(&fontDraw);
dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);
dc.SelectObject(pOldFont);
}
// 검색 처리기를 지원합니다.
void CWeek5practice5Doc::InitializeSearchContent()
{
CString strSearchContent;
// 문서의 데이터에서 검색 콘텐츠를 설정합니다.
// 콘텐츠 부분은 ";"로 구분되어야 합니다.
// 예: strSearchContent = _T("point;rectangle;circle;ole object;");
SetSearchContent(strSearchContent);
}
void CWeek5practice5Doc::SetSearchContent(const CString& value)
{
if (value.IsEmpty())
{
RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);
}
else
{
CMFCFilterChunkValueImpl *pChunk = nullptr;
ATLTRY(pChunk = new CMFCFilterChunkValueImpl);
if (pChunk != nullptr)
{
pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);
SetChunkValue(pChunk);
}
}
}
#endif // SHARED_HANDLERS
// CWeek5practice5Doc 진단
#ifdef _DEBUG
void CWeek5practice5Doc::AssertValid() const
{
CDocument::AssertValid();
}
void CWeek5practice5Doc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
// CWeek5practice5Doc 명령