Programming/MFC

Example 8 : Dialog(Modal)

부풍 2009. 8. 24. 16:27

1. CEx8View

private:
	//CInfo dlg;
	CButton m_pButton;
public:
	virtual void OnInitialUpdate();
private:
	int m_nX;
	int m_nY;
	CString m_sStr;

2. DDX/DDV

3. CEx8View

BEGIN_MESSAGE_MAP(CEx8View, CView)
	// 표준 인쇄 명령입니다.
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_BN_CLICKED(ID_DISPDLG, OnButtonDown)
END_MESSAGE_MAP()
 
void CEx8View::OnButtonDown()
{
	CInfo dlg;
	dlg.m_x = m_nX;
	dlg.m_y = m_nY;
	dlg.m_str = m_sStr;
 
	INT_PTR ret = dlg.DoModal();
	if (ret == IDOK) {
		m_nX = dlg.m_x;
		m_nY = dlg.m_y;
		m_sStr = dlg.m_str;
		//Invalidate();
	}
}

4. Button

void CEx8View::OnInitialUpdate()
{
	CView::OnInitialUpdate();
 
	// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
	RECT rect = CRect(10, 10, 300, 50);
	m_pButton.Create("좌표 및 문자열 넣기", WS_CHILD | WS_VISIBLE |
		BS_PUSHBUTTON, rect, this, ID_DISPDLG);
	m_pButton.ShowWindow(SW_SHOW);
}

5. CEx8View::OnActivateView

void CEx8View::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
	// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
	if (pActivateView == this)
		Invalidate();
 
	CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}

6. CEx8View::OnDraw

void CEx8View::OnDraw(CDC* pDC)
{
	CEx8Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
 
	// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
	pDC->TextOut(m_nX, m_nY, m_sStr);
}