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);}
相关文章推荐
- Fragment中的Toolbar使用与处理,以及toobar在Java代码实现添加logo图片和文字
- 批处理命令 从SVN检出代码 并使用MSBulid命令发布打包网站程序
- jsp中的java代码中不能直接使用else来处理
- cocos2d-js 开发基础练习代码(1)——熟悉场景加载,精灵,动画使用等
- C语言宏定义##连接符和#符的使用(MFC就是靠##自动把消息和消息函数对应起来了,借助宏来减少switch case代码的编写量)
- TX Text Control文字处理教程(1)- 使用Visual Studio 2008开发产品
- MFC—PictureControl控件使用,显示和处理图像
- 使用Android studio 提交代码无反应的处理办法
- 在你的服务器端代码中使用线程和创建异步处理
- MFC中CDC的使用
- 使用Node.js处理前端代码文件的编码问题
- python 中的使用re 正则表达式处理文字
- MFC socket 使用GetAddrInfo 相关代码 client端
- MFC中使用PreTranslateMessage执行两次的处理
- window.showModalDialog浏览器不支持后使用window.open代码问题处理方法
- 关于合理使用SpringMVC统一异常处理机制以改善代码风格的一些思考
- .NET(C#):使用Win32Exception类型处理Win32错误代码
- 使用JavaScript 在input 之 value 输入框文字提示代码
- 使用MFC中的CDC,CBitmap来实现贴图
- 再见ZXing 使用系统原生代码处理QRCode