读文件并在对话框上显示出来

    技术2022-05-11  25

    在OnPaint()中处理以下代码:就可实现 读文件并在对话框上显示出来

    CPaintDC dc(this); // device context for painting /* RECT rect; GetClientRect(&rect);//下面这一行只能单行显示,不知要如何多行显示  DrawText(dc.m_hDC, "Hello, Welcome to Windows!", -1,&rect,DT_VCENTER); */    TEXTMETRIC tm; int xchar,ychar,line=0; char szBuffer[256]; FILE *fp; dc.GetTextMetrics(&tm); xchar = tm.tmAveCharWidth; ychar = tm.tmHeight + tm.tmExternalLeading; if((fp = fopen("MtlTextOut.cpp", "r")) != NULL) {  while(!feof(fp))  {   int i = 0;   char ch;   while((ch = fgetc(fp)) != '/n' && ch != EOF)    szBuffer[i++] = (char)ch;   dc.SetBkMode(TRANSPARENT);//设置背景透明   dc.TextOut(xchar, line*ychar, szBuffer,i);   line++;  }  fclose(fp); }

    虽然DrawText()函数也可以显示多行信息,但在显示多行信息时, 经常使用的是函数TextOut()。为了显示多行信息,我们必须了解显示设备对象度量字体尺寸的方法,因此,本节先介绍这方面的内容。在本节给出的程序示例中,我们还要介绍WM_CREATE消息和借用显示设备对象的另一种方法。   字样是一种基本的字符图案,具有特定的的衬线和笔划宽度,而字体指的是具有相同字样和尺寸的字符集。字体的尺寸用点来度量,点是印刷业中使用的度量字体的最小度量单位,每一英寸大约有72个点。有关字体的更详细的内容在以后章节介绍。   应用程序可以使用Windows提供的不同字体,也可以使用在应用程序的可执行文件中定义和包含的专用字体。本节仅介绍应用程序如何获得有关字体尺寸方面的信息。使用TextOut函数显示多行文本时,需要确定字体字符的大小,以便根据字符的高度和宽度在用户区中显示多行文本。根据字符的高度可以在文本的相继行之间留出空距,而根据字符的宽度在文本的各列之间留出空距。   结构类型TEXTMETRIC描述了与一种字体有关的基本信息,它的各域所给出的字体大小以逻辑单位表示(关于逻辑单位的介绍参见下一章)。该结构类型包含有许多域,图2-2给出了与字体垂直尺寸有关的五个域的定义。 图2-1 TEXTMETRIC结构类型中定义垂直尺寸字体的域   tmInternalLeading的值是允许在一个字符上加上重音号的空隙量,tmExternalLeading的值是字体的设计者推荐的空隙量,在显示多行文本时程序员可以拒绝使用这个空隙量。   在TEXTMETRIC结构类型中,有两个域用来定义字符的宽度:tmAveCharWidth表示字体字符的平均宽度,tmMaxCharWidth表示字体最宽的字符的宽度。Windows中使用两种类型的字体,一类是固定宽度的字体,固定宽度的字体的每个字符的宽度是一样的,这样tmAveCharWidth和tmMaxCharWidth两值相等;另一类是可变宽度的字体,对于这类字体,每个字符占用的宽度不一样。例如, 字符“w”和“i”的宽度就不同,使用可变宽度的字体可以绘制紧凑的文本。   可以使用函数GetTextExtent计算出一个特定的文本行的宽度和高度,使用函数GetTextMetrics可以得到字符的有关尺寸,这两个函数的说明见表2-5。   表2-5-1 GetTextExtent 函数 用 途 该函数使用设备对象当前使用的字体计算一个文本行宽度和高度(逻辑单位),在计算时不考虑当前裁剪区。 原 型 DWORD GetTextExtent(   HDC hDC 设备对象句柄   LPSTR lpString, 指向一个字符串   int nCount 所要计算字符数。 ); 返回值 返回字符串的尺寸,高度在高位字上,宽度在低位字上。   表2-5-2 GetTextMetrics 函数 用 途 返回设备对象当前所使用的字体字符的有关尺寸。 原 型 DWORD GetTextMetrics(   HDC hDC 设备对象句柄   LPTEXTMETRIC lpMetric, 指向TEXTMETRIC类型的变量的指针,有关尺寸被放入该变量中。 ); 返回值 若调用成功,返回非零,否则返回零。


    最新回复(0)