您的位置:首页 > 编程语言

MFC使用CDC的文字处理练习代码

2013-03-16 12:54 501 查看
程序增加五个成员变量
private:
int m_width;
CString m_strline;
CPoint m_pPoint;
CBitmap bitmap;//定义成类的成员变量的原因是:增加生命周期。
CString m_String;
void CTEXTView::OnDraw(CDC* pDC){CTEXTDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herem_String="我正在写一个文字编辑的程序";pDC->TextOut(50,50,m_String);TEXTMETRIC tm;pDC->GetTextMetrics(&tm);//获取字体度量CSize cs;cs=pDC->GetTextExtent(m_String);//获取字符或字符串的长度(不是个数)m_String.LoadString(IDS_AUTHOR);pDC->TextOut(0,200,m_String);pDC->BeginPath();//开始路径定义/*pDC->TextOut(10,10,"Hello");//hello不能输出来textout失效*//*调用GDI绘图函数来定义路径;在Win32中,可以用于定义路径的GDI绘图函数包括:AngleArc  Arc	  ArcTo Chord	CloseFigure	EllipseExtTextOut LineTo	  MoveToEx  Pie PolyBezier PolyBezierTo	  PolyDrawPolygon	  Polyline	  PolylineTo	  PolyPolygon	  PolyPolylineRectangle	  RoundRect	  TextOut*/pDC->Rectangle(50,50,50+cs.cx,50+cs.cy);//这里我们使用rectangle绘图函数定义路径pDC->EndPath();//结束路径定义/*(4)使用路径对象。完成路径定义工作之后,应用程序便可以利用有关GDI函数来使用路径,这些函数包括绘制路径轮廓StrokePath(),填充路径FillPath(),绘制轮廓并填充StrokeAndFillPath(),把路径转换成区域PathToRegion(),把路径直线化FlattenPath(),提取路径数据GetPath(),加宽路径WidenPath()和设置裁剪路径SelectClipPath()等。这些函数的具体使用方法可参阅有关的SDK文档。 */pDC->SelectClipPath(RGN_DIFF);/*该函数选择当前的路径作为设备环境的一个剪切区域*/for (int i=0;i<300;i=i+10){pDC->MoveTo(0,i);pDC->LineTo(300,i);pDC->MoveTo(i,0);pDC->LineTo(i,300);}SetTimer(1,400,NULL);}
int CTEXTView::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code here//CreateSolidCaret(20,100);bitmap.LoadBitmap(IDB_BITMAP1);CreateCaret(&bitmap);ShowCaret();return 0;}void CTEXTView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_pPoint=point;m_strline.Empty();SetCaretPos(point);CView::OnLButtonDown(nFlags, point);}void CTEXTView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){// TODO: Add your message handler code here and/or call defaultCDC *cdc=GetDC();TEXTMETRIC tm;cdc->GetTextMetrics(&tm);if (nChar==0x0d){m_strline.Empty();m_pPoint.y+=tm.tmHeight;}else if (nChar==0x08){COLORREF clr=cdc->SetTextColor(cdc->GetBkColor());cdc->TextOut(m_pPoint.x,m_pPoint.y,m_strline);m_strline=m_strline.Left(m_strline.GetLength()-1);cdc->SetTextColor(clr);}else{m_strline+=nChar;}CSize cs;cs=cdc->GetTextExtent(m_strline);CPoint pt;pt.x=m_pPoint.x+cs.cx;pt.y=m_pPoint.y;SetCaretPos(pt);cdc->TextOut(m_pPoint.x,m_pPoint.y,m_strline);CView::OnChar(nChar, nRepCnt, nFlags);}void CTEXTView::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call defaultm_width+=8;CDC *dc=GetDC();TEXTMETRIC tm;dc->GetTextMetrics(&tm);CRect rect;rect.top=200;rect.left=0;rect.bottom=tm.tmHeight+200;rect.right=m_width;COLORREF cr=dc->SetTextColor(RGB(255,0,0));m_String.LoadString(IDS_AUTHOR);dc->DrawText(m_String,&rect,DT_LEFT);CView::OnTimer(nIDEvent);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: