mfc_sdi_2 - 8BitsCoding/RobotMentor GitHub Wiki





ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ ๋ ๋ชจ๋ ํ์ผ์ด ์๋ ํน์ ํ์ผ๋ง ์ด๊ณ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด?
๋ฆฌ์์ค๋ทฐ -> ์คํธ๋ง ํ ์ด๋ธ๋ก ์ด๋

IDR_MAINFRAME์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
MFCApplication6\n\nMFCApplication6\nํ
์คํธ ํ์ผ(*.txt)\n.txt\nMFCApplication6.Document\nMFCApplication6.Document
\n\n\n
๋ฅผ
\nํ ์คํธ ํ์ผ(*.*)\n.txt\n
๋ก ์์

์๋ก ๋ง๋ค๊ธฐ(Ctrl+N)๋ฅผ ๋๋ฅด๋ฉด ํธ์ถ๋๋ ํจ์ ์ฒ๋ฆฌ

BOOL CMFCApplication6Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
if (!m_viewList.IsEmpty())
{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SetWindowText(nullptr);
}
// TODO: ์ฌ๊ธฐ์ ์ฌ์ด๊ธฐํ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
// SDI ๋ฌธ์๋ ์ด ๋ฌธ์๋ฅผ ๋ค์ ์ฌ์ฉํฉ๋๋ค.
return TRUE;
}
m_viewList
๊ฐ View๋ฅผ ์๋ฏธํ๊ณ Head์ ๋ณด๋ฅผ ๋ฐ์์์(.GetHead()
) ์๋์ฐ์ ํ ์คํธ๋ฅผ ๋น์ด๋ค.(SetWindowText(nullptr)
)
์ ์ฅ์ด๋ ์ด๊ธฐ ํจ์ ์ฒ๋ฆฌ
void CMFCApplication6Doc::Serialize(CArchive& ar)
{
// CEditView์๋ ๋ชจ๋ serialization์ ์ฒ๋ฆฌํ๋ edit ์ปจํธ๋กค์ด ๋ค์ด ์์ต๋๋ค.
if (!m_viewList.IsEmpty())
{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
}
#ifdef SHARED_HANDLERS
if (m_viewList.IsEmpty() && ar.IsLoading())
{
CFile* pFile = ar.GetFile();
pFile->Seek(0, FILE_BEGIN);
ULONGLONG nFileSizeBytes = pFile->GetLength();
ULONGLONG nFileSizeChars = nFileSizeBytes/sizeof(TCHAR);
LPTSTR lpszText = (LPTSTR)malloc(((size_t)nFileSizeChars + 1) * sizeof(TCHAR));
if (lpszText != nullptr)
{
ar.Read(lpszText, (UINT)nFileSizeBytes);
lpszText[nFileSizeChars] = '\0';
m_strThumbnailContent = lpszText;
m_strSearchContent = lpszText;
}
}
#endif
}
View ์๋์ฐ๊ฐ ๋ง๋ค์ด์ง๊ธฐ ์ ํธ์ถ๋๋ ํจ์๋? (OnInitDialog)
BOOL CMFCApplication6View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: CREATESTRUCT cs๋ฅผ ์์ ํ์ฌ ์ฌ๊ธฐ์์
// Window ํด๋์ค ๋๋ ์คํ์ผ์ ์์ ํฉ๋๋ค.
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // ์๋ ์ค๋ฐ๊ฟ์ ์ฌ์ฉํฉ๋๋ค.
return bPreCreated;
}
๋ง์ฐ์ค ์ฐํด๋ฆญ ์ฒ๋ฆฌ ํจ์
void CMFCApplication6View::OnRButtonUp(UINT /* nFlags */, CPoint point)
{
ClientToScreen(&point);
OnContextMenu(this, point);
}