代码之家  ›  专栏  ›  技术社区  ›  IceCold

如何在TMemo中获取文本位置(以像素为单位)?

  •  2
  • IceCold  · 技术社区  · 7 年前

    我想获得TMemo中文本(aWord)的位置/位置(以像素为单位)。我的代码是这样的:

    var
     Size: TSize;
     Pt: Cardinal;
     aWord: string;
     x, y: Integer;
    begin
     ...
     Pt := Perform(EM_POSFROMCHAR, aStart-1, 0);
     Windows.GetTextExtentPoint32(DC, PChar(aWord), aLen, Size);
     x:= Smallint(LoWord(Pt));
     y:= Smallint(HiWord(Pt));
    

    向下滚动时如何获取位置?


    官员 documentation 说:

    如果已删除字符,则返回的坐标可以为负 滚动到编辑控件的客户端区域之外。坐标 被截断为整数值。

    我不知道怎么解释这个。

    1 回复  |  直到 7 年前
        1
  •  2
  •   IceCold    7 年前

    傻。我的脑子一直在想“坐标被截断成整数值”——我仍然不知道这是什么意思。我试图转换那些坐标。

    解决方案很愚蠢:如果我们得到一个负数,这意味着文本在屏幕之外。我们不尝试提取/转换Loword和HiWord。我们只是退出程序。


    此外,Pt应为“Nativent”。

    推荐文章