/* File : Hello.h */ class CMyApp : public CWinApp { public: virtual BOOL InitInstance(); }; class CMainWindow : public CFrameWnd { public: CMainWindow(); protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP() }; //-------------------------------------------------------------------- // File : Hello.cpp //==================================================================== #include <afxwin.h> #include "Hello.h" CMyApp myApp; /* CMyApp member functions */ BOOL CMyApp ::InitInstance() { m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return true; } /* CMainWindow message map and member functions */ BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_WM_RBUTTONDOWN() END_MESSAGE_MAP () /* */ CMainWindow::CMainWindow() { Create (NULL, _T("Hello")); } /* */ void CMainWindow::OnPaint () { // CPaintDC : For drawing in a window's client area(OnPaint handlers only) CPaintDC dc(this); CRect rect; GetClientRect(&rect); dc.DrawText(_T("Hello, MFC"), -1, &rect, DT_SINGLELINE |DT_CENTER|DT_VCENTER); } /* */ void CMainWindow::OnLButtonDown(UINT nFlags, CPoint point) { //CWnd::MessageBox("left button down "); CRect rect; GetClientRect(&rect); // CClientDC : For drawing a window's client area(anywhere but OnPaint) CClientDC dc(this); dc.MoveTo(rect.left, rect.top); dc.LineTo(rect.right, rect.bottom); dc.MoveTo(rect.right, rect.top); dc.LineTo(rect.left, rect.bottom); } /* */ void CMainWindow::OnRButtonDown(UINT nFlags, CPoint point) { //CWnd::MessageBox("right button down"); // CClientDC : For drawing in a window's client area //(anywhere but OnPaint) CClientDC dc(NULL); dc.Ellipse(0, 0, 100, 100); // CWindowDC : For drawing anywhere in a window, // including the nonclient area //CWindowDC wdc(this); //wdc.Rectangle(100, 100, 200, 200); }