字体
第(1/7)页
关灯
   存书签 书架管理 返回目录
    ct tagSIZE {

    LONG cx;

    LONG cy;

    } SIZE, *PSIZE;

    通过计算字符串的起始坐标与字符串宽度之和,即可得到后续文本的起始坐标。例如,

    枫叶文学网www.fywxw.com

    第6 章 文本和字体类

    ·153·

    X 轴起始坐标为cx0,如果当前字符串的尺寸信息存储在size 指向的SIZE 结构中,则后续文

    本的起始坐标cx1 为:

    cx1 = cx0 + size.cx;

    (2)确定换行时的文本坐标

    通过计算当前行文本字符的高度与行间隔之和,即可得到换行时文本的起始坐标,上述

    两个数值可通过获取当前字体的信息得到,如果当前字体的信息存储在tm 指向的

    TEXTMETRICS 结构中,则换行时Y 轴上文本的起始坐标cy 为:

    cy = tm.tmHeight + tm.tmExternalLeading;

    3.文本输出

    Windows 程序设计时用得最多的文本输出函数便是Textout,其API 的函数原型如下:

    BOOL TextOut(

    HDC hdc, // DC 句柄

    int nXStart, // 起始点X 坐标

    int nYStart, //起始点Y 坐标

    LPCTSTR lpString, // 输出的字符串

    int cbString // 输出的字符串中字符数目

    );

    通过调用此函数,可以在指定位置输出文本。

    6.4 字体和文本输出实例

    实例6-1:字体和文本输出实例。源代码在光盘中“\06\实例6-1\gundong”目录下。

    本节实现了一个动态字幕的例子。从本例中读者可以学习到动态地改变文本坐标来实现

    实现动态字幕的方法。该示例是基于对话框模式的,通过改变文本的坐标然后进行实时刷新

    来显示字幕,屏幕刷新通过定时器来实现。。

    本例的部分核心源代码如下。

    CGundongDlg::CGundongDlg(CWnd* pParent /*=NULL*/)

    : CDialog(CGundongDlg::IDD, pParent)

    {

    //{{AFX_DATA_INIT(CGundongDlg)

    // NOTE: the ClassWizard will addcommber initialization here

    //}}AFX_DATA_INIT

    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

    WidthX=200;

    minWidth=10;

    Heighty=15;

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·154·

    m
上一章 目录 下一页