<Á¤Àû ºÐÇÒ À©µµ¿ì - Æûºä¿Í ÀÏ¹Ýºä °°ÀÌ ¾²±â 1>
¨ç ÇÁ·ÎÁ§Æ® ¸í: Split2
¨è SDI °úÁ¤ 4/6 ¿¡¼ Advanced - use split window ¼±ÅÃ.
¨é ¸®¼Ò½º¿¡¼ insert ÇØ¼ formview Ãß°¡.
À̶§ Base class´Â ¹Ýµå½Ã CFormView·Î ÇÒ °Í.
¨ê class wizard·Î formview¿¡ ¿¬°áµÈ Ŭ·¡½º »ý¼º -
À̸§Àº CForm À¸·Î ÇÔ.
¨ë MainFrm.cpp¸¦ ´ÙÀ½°ú °°ÀÌ °íÄ£´Ù.
// MainFrm.cpp : implementation of the CMainFrame class
.....
#include "MainFrm.h"
#include "Split2Doc.h" // -+
#include "Split2View.h" // +- Ãß°¡ (¼ø¼Áß¿ä)
#include "Form.h" // -+
......
// OnCreateClient() ÇÔ¼ö ¼öÁ¤
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
m_wndSplitter.CreateStatic( this,1,2);
m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CSplit2View), CSize(400,100), pContext);
m_wndSplitter.CreateView(0, 1,
RUNTIME_CLASS(CForm), CSize(100,100), pContext);
SetActiveView((CView *)m_wndSplitter.GetPane(0,0));
return TRUE;
}
¨ì Document ¿¡ test ¶ó´Â doubleÇü º¯¼ö¸¦ Ãß°¡.
¨í Form.h ¿¡ ´ÙÀ½°ú °°ÀÌ GetDocument() ÇÔ¼ö¸¦ ¸¸µé¾î ÁÜ.
class CForm : public CFormView
{
............
// Attributes
public:
CSplit2Doc* GetDocument(); // Ãß°¡
.........
}
// ´ÙÀ½ 4ÁÙ: ºä¿¡¼ 'º¹»ç-ºÙ¿©³Ö±â' ÇØ¼ Æûºä Ŭ·¡½º¸íÀ¸·Î ¼öÁ¤
// À̰ÍÀº release ¿ë
#ifndef _DEBUG // debug version in Form.cpp
inline CSplit2Doc* CForm::GetDocument()
{ return (CSplit2Doc*)m_pDocument; }
#endif
¨î Form.cpp ÀÇ ³»¿ëÀ» ´ÙÀ½°ú °°ÀÌ
¼öÁ¤.
.........
#include "Split2Doc.h" // Ãß°¡ (Doc°¡ ¸ÕÀú View´Â µÚ¿¡ Ãß°¡) #include "Split2View.h" // Ãß°¡ #include "Form.h"
.........
/////////////////////////////////////////////////////////////////////////////
// CForm diagnostics
#ifdef _DEBUG
..............
// GetDocument() ÇÔ¼ö Ãß°¡
// ´ÙÀ½ 5ÁÙ: ºä¿¡¼ 'º¹»ç-ºÙ¿©³Ö±â' ÇØ¼ Æûºä Ŭ·¡½º¸íÀ¸·Î ¼öÁ¤
CSplit2Doc* CForm::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSplit2Doc)));
return (CSplit2Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CForm message handlers
// Æûºä¿¡ ÀÖ´Â ¹öưÀÇ ¸Þ½ÃÁö Çڵ鷯
void CForm::OnButton1()
{
// TODO: Add your control notification handler code here
CSplit2Doc *pDoc = GetDocument();
ASSERT_VALID(pDoc);
UpdateData(true);
pDoc->test = m_edit1; // m_edit1 : class wizard¿¡¼ Á¤ÇÑ ¿¡µðÆ® ¹Ú½ºÀÇ º¯¼ö
pDoc->UpdateAllViews(this); // µµÅ¥¸ÕÆ®¿¡ ¿¬°áµÈ ¸ðµç ºä °»½Å
// Æûºä´Â °»½ÅÇÏÁö ¾ÊÀ½
}
¨ï Split2ViewÀÇ OnDraw() ÇÔ¼öÀÛ¼º
void CSplit2View::OnDraw(CDC* pDC)
{
CSplit2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str;
str.Format("%f", pDoc->test);
pDC->TextOut(10,10, str);
}
<Á¤Àû ºÐÇÒ À©µµ¿ì - Æûºä¿Í ÀÏ¹Ýºä °°ÀÌ ¾²±â 2>
¨ç~¨ì ±îÁö °°Àº ¼ø¼·Î ÀÛ¼º.
¨í Æûºä ¹öưÀÇ ¸Þ½ÃÁö Çڵ鷯¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼º.
void CForm::OnButton1()
{
// TODO: Add your control notification handler code here
// View¸¦ µÑ·¯½Ñ FrameWindowÀÇ Æ÷ÀÎÅ͸¦ ±¸ÇÔ.
CFrameWnd *pFr = (CFrameWnd *)AfxGetMainWnd();
// ÀÌ Æ÷ÀÎÅÍ¿¡¼ Ȱ¼ºÈµÈ µµÅ¥¸ÕÆ®ÀÇ Æ÷ÀÎÅ͸¦ ±¸ÇÔ.
CSplit2Doc *pDoc = (CSplit2Doc *)(pFr->GetActiveDocument());
UpdateData(true);
pDoc->test = m_edit1;
pDoc->UpdateAllViews(this); // formview´Â °»½ÅÇÏÁö ¾ÊÀ½
}
¨î Form.cpp¿¡ DocumentÀÇ Çì´õÆÄÀÏ
Æ÷ÇÔ½ÃÅ´
.........
#include "Split2Doc.h" // Ãß°¡ (¹Ýµå½Ã Form.h ¾Õ¿¡ Ãß°¡ÇÒ °Í) #include "Form.h"
.........
¨ï ¹æ¹ý1ÀÇ ¨ï¿Í °°ÀÌ Split2ViewÀÇ OnDraw() ÇÔ¼ö ÀÛ¼º