当前位置: 首页 > article >正文

VC++路径

目录

路径

接上:VC++窗口重绘 OnDraw函数 添加字符串资源

接下:VC++字符输入 ASCII码


路径

void CTextView::OnDraw(CDC* pDC)
{CTextDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CString str;str = _T("风灵");pDC->TextOut(100, 100, str);str.LoadString(IDS_STRINGVC);pDC -> TextOut(0, 200, str);// TODO: 在此处为本机数据添加绘制代码
}

在设备描述表中还有一个路径层(path bracket)的概念。什么是路径层呢?路径层的概念就像当年军阀割据时圈地那样,在地域上划定了界线,界线之内的是各自的地盘,别人不能侵犯。

在MFC中,创建路径层是利用CDC类提供的BeginPathEndPath这两个函数来实现的,首先调用前者BeginPath,该函数的作用是在设备描述表中打开一个路径层;然后利用图形设备接口(GDI)提供的绘图函数进行绘图操作,例如绘制一些点、矩形、椭圆等;最后,在绘图操作完成之后,应用程序通过调用EndPath函数关闭这个路径层。

下面我们在路径层中绘制一个矩形,将先前输出的“风灵01”字符串框起来。如果要用一个矩形把字符串框起来,就需要知道这个字符串在窗口中的坐标值。在上述代码中,字符串“风灵01”是在坐标(100,100)处输出的,于是我们可以确定矩形的左上角坐标为(100,100),但是如何确定矩形的右下角坐标呢?对一个字符串来说,如果能够知道它的宽度和高度,再加上它的左上角坐标就能够得到包围这个字符串的矩形的右下角坐标了。我们能不能利用C 语言中的strlen 函数来获得字符串的宽度呢?strlen 这个函数获得的是字符串中字符的个数,而字符串在窗口中显示时占据的宽度并不是由其字符数来决定的。例如“w”和“i”同样都是一个字符,但它们所占据的宽度是不一样的。同时,字体的大小也会影响字符串在窗口中显示的宽度。另外,我们在使用Word时,经常会根据需要调整字间距,也就是说,字符和字符之间实际上是有间距的。由此可见,一个字符串在屏幕上显示的宽度是由多个方面的因素决定的,因此,希望利用strlen函数来获得字符串的宽度是根本无法做到的。CDC类为我们提供了一个GetTextExtent函数,利用这个函数可以获得一个字符串在屏幕上显示的宽度和高度,这个函数的一种声明形式如下所示:

CSize GetTextExtent(const CString& str 
) const;

从上述声明中可以得知,我们需要给这个函数传

http://www.lryc.cn/news/2418463.html

相关文章:

  • 安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
  • Linux mail 命令(smtp.163.com)
  • oracle number()类型,ORACLE NUMBER类型详解
  • JavaVM和JNIEnv
  • [教程]Smarty 入门
  • 强烈推荐10本程序员必读的书
  • 2012互联网公司年会美女大盘点
  • [刷机教程] 刷中文recovery V880最简单的刷机教程,更新recovery,修复若干BUG,支持最新ROM
  • PHP+APACHE+MYSQL
  • 新闻事件营销
  • unit5:数据库
  • 怎么完全卸载赛门铁克_卸载Symantec Endpoint Protection, 无需password的卸载方法
  • 数据结构与算法知识要点简明教程(合集)
  • ROUTE.EXE文件丢失导致程序无法运行问题
  • 用Ajax方式提交form表单
  • C/C++生态工具链——单元测试工具Catch2简介
  • java jdbc reparecall_JDBC学习笔记
  • RO11 -用RemObjects SDK创建异步调用客户端
  • Windows7系统sfc_os.dll文件丢失问题
  • 常见游戏外挂分类及原理概述
  • 播放器比的就是画质
  • 电脑回收站无法清空:原因及解决方案大揭秘
  • myeclipse部署时An internal error occurred 错误的几种情况
  • verilog实现多周期处理器之——(六)简单算数操作指令的实现
  • 本人跑fedora 13的烦恼
  • java定时器Timer 类的使用及Timer already cancelled问题解决
  • Apache License Version 2.0中文翻译版
  • 关于Tapestry5运行时报错的解决方法。
  • TransactionScope使用(二)——msdtc不可用
  • hmailserver的反垃圾邮件功能