此问题的“分散对齐”含义不同于Word中的概念。
它是指单行文本里的每个字符(包括首尾字符)都实现自己居中,假设有一字串“ABC”,现以“_”代替字符间隔(注意:不是指空格字符)
其最终显示的效果为:
__A__B__C__当然这个效果也能通过编程指定XY输出位置来实现。但能否用API来实现吗?
不太清楚SetTextCharacterExtra,SetTextJustification的含义及用法,请赐教!另,我用的VB5+SP?+Win98SE中,PictureBox没有Print方法,能否引用98自带的某个库,来实现Print方法吗?

解决方案 »

  1.   

    Declare Function SetTextCharacterExtra Lib "gdi32" Alias "SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long 
    说明 
    描绘文本的时候,指定要在字符间插入的额外间距 
    返回值 
    Long,这个设备场景的前一个额外间距设置 
    参数表 
    参数 类型及说明 
    hdc Long,设备场景的句柄 
    nCharExtra Long,要在字符间插入的额外空间,采用设备场景的逻辑坐标系统 
    在VB里使用 
    如改变了这个设置,注意恢复VB窗体或控件原来的字符间距设置
     Declare Function SetTextJustification Lib "gdi32" Alias "SetTextJustification" (ByVal hdc As Long, ByVal nBreakExtra As Long, ByVal nBreakCount As Long) As Long 
    说明 
    通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hdc Long,设备场景的句柄 
    nBreakExtra Long,描绘时欲添加到字串的额外空间大小 
    nBreakCount Long,用于分散额外空间的分隔字符的数量 
    在VB里使用 
    如使用了这个函数,要确定针对VB窗体或控件清除错误条件
     
    注解 
    额外空间由行内各个分隔字符分摊。这里的“分隔字符”是由特定的字体定义的,通常都是空格字符。可用GetTextMetrics函数了解一种字体采用的分隔字符是什么。对文本进行两端对齐排列的时候,通常需要采取的操作步骤如下:
    1、用GetTextExtentPoint32这个API函数计算字串占据的显示范围
    2、决定为了使一个行两端对齐,需要加入多少额外的空间(采用逻辑坐标)。这个空间(或距离)通常等于右页边距减去文本的水平“范围”
    3、计算一行文本中采用多少个间隔字符(通常是空格)
    4、将额外空间以及间隔字符的数量作为参数,调用SetTextJustification函数
    5、调用文本绘图(显示)函数
    这个函数在内部维持着一种错误条件,用于纠正对齐过程中出现的误差。这样一来,我们就可以区分出行内不同部分间的额外间距(如行内使用了多种字体)。具体的方法是将行分割成几个段,然后为每一段都调用这个函数。对于一个新行,必须清除这个错误条件,方法是向nBreakExtra和nBreakCount参数传递零值,然后调用这个函数