MFC初步教程(二)

绘制简单的图形几乎是所有的VC教程中的必须内容,这里面涉及到几个概念,设备(device context),画刷(Pen)等。CDC是所有设备的父类,其子类包括CClientDC(仅在客户区绘制), CPaintDC, CWindowDC(可以在客户区和窗口非客户区绘制)等。所有继承于CWnd类的子类均可以构造设备类。

#include <afxwin.h>

class MFC_Tutorial_Window: public CFrameWnd
{
	CPoint m_startPoint;
	CPoint m_endPoint;
public:
	MFC_Tutorial_Window()
	{
		Create(NULL, "MFC Tutorial");
	}

	void OnLButtonDown(UINT nFlags, CPoint point);
/*	{
		CFrameWnd::OnLButtonDown(nFlags,point);

		m_startPoint = point;	
	}*/
	
	void OnLButtonUp(UINT nFlags, CPoint point);
/*	{
		CFrameWnd::OnLButtonUp(nFlags, point);
		m_endPoint = point;

		CClientDC dc(this);
		dc.MoveTo(m_startPoint);
		dc.LineTo(m_endPoint);
	}*/

	DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP( MFC_Tutorial_Window, CFrameWnd)
ON_WM_LBUTTONDOWN() //Macro to map the left button click to the handler
ON_WM_LBUTTONUP() //Macro to map the left button click to the handler
END_MESSAGE_MAP()

void MFC_Tutorial_Window::OnLButtonDown(UINT nFlags, CPoint point)
{	
	m_startPoint = point;
	
	CFrameWnd::OnLButtonDown(nFlags,point);
}

void MFC_Tutorial_Window::OnLButtonUp(UINT nFlags, CPoint point)
{	
	m_endPoint = point;

	CPen pen(PS_SOLID, 1, RGB(255,0,0));
	
	CWindowDC dc(this);      // 构造dc时必须传入一个CWnd类或其子类对象
	CPen* pOldPen = dc.SelectObject(&pen);  
	dc.MoveTo(m_startPoint);
	dc.LineTo(m_endPoint);
	dc.SelectObject(pOldPen);

	CFrameWnd::OnLButtonUp(nFlags, point);
}

class MyApp: public CWinApp
{
	MFC_Tutorial_Window *wnd;
public:
	BOOL InitInstance()
	{
		wnd = new MFC_Tutorial_Window();
		m_pMainWnd = wnd;
		m_pMainWnd->ShowWindow(1);
		return 1;
	}
};

MyApp theApp;

 

posted @ 2013-01-05 22:16  iosJohnson  阅读(718)  评论(0编辑  收藏  举报