李晓亮的博客

导航

个人经验收集

1.在VB中添加工程组(Group)
菜单:文件->添加工程
2.使用API函数

3.

DrawText函数详解
一、 说明

API 函数DrawText可以在规定设备场景的矩形区域内上描绘字体,这为我们制作绘图程序、打印程序提供了方便。函数圆形:

int DrawText(

    HDC hDC,   //设备场景
    LPCTSTR lpString, // 要绘制的字符串
    int nCount, // 要绘制的字符串长度
    LPRECT lpRect, // 矩形区域
    UINT uFormat  // 绘制格式
 );
 

  DT_TOP = 0;                 //顶对齐
  DT_LEFT = 0;               //左对齐
  DT_CENTER = 1;             //居中
  DT_RIGHT = 2;              //右对齐
  DT_VCENTER = 4;             //垂直居中
  DT_BOTTOM = 8;               //底对齐
  DT_WORDBREAK = $10;          //允许换行
  DT_SINGLELINE = $20;           //单行显示
  DT_EXPANDTABS = $40;
  DT_TABSTOP = $80;
  DT_NOCLIP = $100;
  DT_EXTERNALLEADING = $200;
  DT_CALCRECT = $400;
  DT_NOPREFIX = $800;
  DT_INTERNAL = $1000;
  DT_HIDEPREFIX = $00100000;
  DT_PREFIXONLY = $00200000;

  DT_EDITCONTROL = $2000;
  DT_PATH_ELLIPSIS = $4000;
  DT_END_ELLIPSIS = $8000;              //结尾显示...
  DT_MODIFYSTRING = $10000;
  DT_RTLREADING = $20000;
  DT_WORD_ELLIPSIS = $40000;


二、Delphi 举例

procedure TForm1.Button1Click(Sender: TObject);
var
    TheRect:TRect;
begin
    TheRect := Rect(0,0,200,50);
    DrawText(form1.Canvas.Handle,'你好,你看到的是DrawText()函数在窗体上绘制的文字,举行区域规格为200 * 50, top=0,left=0 由于本段文字太长,超出矩形区域的边界,不能显示的字符作...表示',-1,TheRect,
    DT_LEFT + DT_WORDBREAK + DT_END_ELLIPSIS);
end;


三、 VB程序示例

Private Declare Function DrawText& Lib "user32" Alias "DrawTextA" (ByVal hDC As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long)
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Const DT_TOP = &H0
Private Const DT_LEFT = &H0
Private Const DT_CENTER = &H1 '垂直居中
Private Const DT_RIGHT = &H2
Private Const DT_VCENTER = &H4 '水平居中
Private Const DT_BOTTOM = &H8
Private Const DT_WORDBREAK = &H10
Private Const DT_SINGLELINE = &H20
Private Const DT_NOPREFIX = &H800 '取消“&”的下划线属性
Private Const DT_END_ELLIPSIS& = &H8000&
Private Const DT_MODIFYSTRING& = &H10000


Private Sub Command1_Click()
    Dim str As String
    Dim myRect As RECT
   
    myRect.Left = 0
    myRect.Top = 0
    myRect.Right = 200
    myRect.Bottom = 47
   
   
    str = "你好,你看到的是DrawText()函数在窗体上绘制的文字,举行区域规格为200 * 50, top=0,left=0 由于本段文字太长,超出矩形区域的边界,不能显示的字符作...表示"
    PrnPram = DT_LEFT Or DT_WORDBREAK Or DT_END_ELLIPSIS
    Call DrawText(Form1.hDC, ByVal str, -1, myRect, PrnPram)
   
End Sub

 

posted on 2009-04-03 20:30  LeeXiaoLiang  阅读(152)  评论(0)    收藏  举报