应用程序类 . 上面我们所讲的是该应用程序的一个基本框架 , 它可以由 MFC
AppWizard ( exe ) 自动生成 , 由于
定义好该类后 , 需要在文档类和视类中添加相应的变量和函数 , 用来记录和绘制图形 ; 在此基础 上还需要建立相应的消息传递 , 包括鼠标左键按下 , 鼠标左键抬起和鼠标的移动 .部分重要的代码如 下: 在文档类中 ( ExampleDoc , cpp ) : CStroke 3 CScribbleDoc : NewStroke () ‖ 用来生成一个新的笔划 {CStroke 3 pStrokeItem = new CStroke ( m2nPenWidth) ; m2strokeList . AddTail (pStrokeItem) ; SetModifiedFlag () ; return pStrokeItem ;} void CScribbleDoc: InitDocument () ‖ : 初始化 ( PS2SOLID , m2nPenWidth , RG ( 0 , 0 , 0) ) ;} {m2nPenWidth = 2 ; m2penCur. CreatePen B (LPCTSTR IpszPathName) BOOL CScribbleDoc:OnOpenDocument : ( ! CDocument :OnOpenDocument ( IpszPathName) ) {if :
总第 49 期
钟 : VC + + 中的基础类库 MFC 睿
·6 3 ·
CPen 3 p01dPen = dc. selectObject (pDoc - > GetCurrentPen () ) ; de. MoveT ( m2ptPrev) ; de. Line2 o T (point ) ; de. SelectObject (p01dPen) ; o m2pStrokeCur - > m2pointArray. Add (point ) ; ReleaseCapture () ; return ;} void CScribbleView:OnMouseMove (UINT nFlags , CPoint point ) : {if ( GetCapture () ! = this) return ; CClientDC de ( this) ; m2pStrokeCur - > m2pointArray , Add (point ) ;
for ( int i = 1 ; i < m2pointArray. GetSize () ; i + + ) 〕 {pDC - > LineT ( m2pointArray [ i ] ) ;} o pDC - > SelectObject (p01dpen) ; return TRUE ;} {
BOOL CStroke:DrawStroke ( CDC 3 pDC) ‖ : 这是一个画线函数 {CPen penStroke : void CScribbleView:OnLButtonDown (UINT nFlags , CPoint point ) :
在视类中 ( ExampleView. cpp ) ; BEGIN - MESSAGE - MAP ( CScribbleView , CView) ‖ 这是消息映射 ON - WM - LBUTTONDOWN () ‖ 鼠标左键按下将响应 OnLButtonDown 函数 ON - WM - LBUTTONUP () ‖ 鼠标左键抬起将响应 OnLButtonUp 函数 () ‖ ON2WM2MOUSEMOVE 鼠标移动将响应 OnMouseMove 函数 () END2MESSAGE2MAP void