关于 ExtTextOutW 函数,请各位帮个忙,谢!

coder_nullptr 2007-05-08 01:57:48
我新建了一个工程,在一个窗体里加进了一个 TTntTreeView 控件

调用以下代码在繁体和英文机上没有问题

procedure TForm1.TreeViewTestCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
xRect: TRect;
xText: WideString;
begin
DefaultDraw := False;
xRect := Node.DisplayRect(true);
xText := '测试';

ExtTextOutW(TreeViewTest.Canvas.Handle, xRect.Left,
xRect.Top, TreeViewTest.Canvas.TextFlags, nil,
PWideChar(xText), Length(xText), nil);
end;

可以正常显示,但调用以下代码中文部分显示 "?" 号

procedure TForm1.TreeViewTestCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
xRect: TRect;
xText: WideString;
begin
DefaultDraw := False;
xRect := Node.DisplayRect(true);
xText := Node.Text;

ExtTextOutW(TreeViewTest.Canvas.Handle, xRect.Left,
xRect.Top, TreeViewTest.Canvas.TextFlags, nil,
PWideChar(xText), Length(xText), nil);
end;

由于界面需要,要重新调整文字位置的,请各位帮我解决这个问题,谢谢!!
...全文
377 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coder_nullptr 2007-05-10
  • 打赏
  • 举报
回复
怎么没有人回,自己顶一下!!
Transitional 2007-05-09
  • 打赏
  • 举报
回复
:)
coder_nullptr 2007-05-09
  • 打赏
  • 举报
回复
不是很明白,可以给具体代码吗?谢谢!!
zuoansuifeng 2007-05-09
  • 打赏
  • 举报
回复
ExtTextOut

说明
经过扩展的文本描绘函数。也请参考SetTextAlign函数
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,设备场景的句柄
x,y Long,以逻辑坐标表示的一个点,指定了绘图起点
wOptions Long,下述标志常数的任意组合
ETO_CLIPPED 将文本剪切出指定的矩形
ETO_GLPYH_INDEX lpString是一个字样索引表。参考对GetCharacterPlacement函数的说明。只适用于Win95
ETO_OPAQUE 在正式描绘文本前,用当前的背景色填充矩形
lpRect Rect,指定一个矩形,用于对文本进行格式化处理。可指定长整数0,在不用矩形区域的前提下描绘文本
lpString String,欲描绘的字串
nCount Long,字串中要显示出来的字符数
lpDx Long,如果不是零,这个参数就代表指向一个Long值数组的指针。该数组对每一对字符的间距进行了说明(采用逻辑单位)。其中第一个条目是第一和第二个字符的间距;第二个条目是第二和第三个字符的间距;以此类推。如果为零,函数就使用字体的默认间距设置
coder_nullptr 2007-05-08
  • 打赏
  • 举报
回复
补充一下,两者在简体中文的系统中没有问题,可以正常显示的!

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧