2009. 8. 24. 16:25 Programming/MFC

1. Draw Menu 만들기

  • ID_DRAW_CIRCLE, ID_DRAW_SQUARE, ID_DRAW_PATTERN

2. CEx5View

private:
	BOOL m_bDrawPattern;
	BOOL m_bIsCircle;
	CRect m_Rect;

3. Command Message Handler 구현

void CEx6View::OnDrawCircle()
{
	m_bIsCircle = TRUE;
	m_Rect += CPoint(25, 25);
	InvalidateRect(m_Rect);
}
 
void CEx6View::OnDrawPattern()
{
	m_bDrawPattern ^= 1;
}
 
void CEx6View::OnDrawSquare()
{
	m_bIsCircle = FALSE;
	m_Rect += CPoint(25, 25);
	InvalidateRect(m_Rect);
}
 
void CEx6View::OnUpdateDrawCircle(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(!m_bIsCircle);
}
 
void CEx6View::OnUpdateDrawSquare(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(m_bIsCircle);
}
 
void CEx6View::OnUpdateDrawPattern(CCmdUI *pCmdUI)
{
	pCmdUI->SetCheck(m_bDrawPattern);
}

4. CEx6View::OnDraw

void CEx6View::OnDraw(CDC* pDC)
{
	CEx6Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
 
	// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
	CBrush myBrush, *pOrgBrush;
	myBrush.CreateHatchBrush(HS_CROSS, RGB(0, 255, 0));
 
	if (m_bDrawPattern)
		pOrgBrush = pDC->SelectObject(&myBrush);
	else
		pDC->SelectStockObject(WHITE_BRUSH);
 
	if (m_bIsCircle)
		pDC->Ellipse(m_Rect);
	else
		pDC->Rectangle(m_Rect);
 
	if (m_bDrawPattern)
		pDC->SelectObject(pOrgBrush);
}

5. CEx6View::OnInitialUpdate

void CEx6View::OnInitialUpdate()
{
	CView::OnInitialUpdate();
 
	m_Rect = CRect(0, 0, 100, 100);
	m_bIsCircle = TRUE;
	m_bDrawPattern = FALSE;
}

6. CMainFrame

protected:  // 컨트롤 모음이 포함된 멤버입니다.
	CStatusBar  m_wndStatusBar;
	CToolBar    m_wndToolBar;
	CToolBar	m_myToolBar;

7. CMainFrame::OnCreate

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	// ~~~~
 
	if (!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_myToolBar.LoadToolBar(IDR_TOOLBAR1))
	{
		TRACE0("도구 모음을 만들지 못했습니다.\n");
		return -1;      // 만들지 못했습니다.
	}
	m_myToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_myToolBar);
 
	return 0;
}

posted by 부풍