2012-08-16 85 views
3

嗨我有一个文本框包含一些文本。我正在寻找复制红色拼写错误squiggle类型的行为。TextBox中文本的位置

使用WinAPI的我可以

  • 画2点之间的抽搐。
  • 找出 这个词的高度和宽度是“扭曲”的。

什么是API调用(或者可能的方法,如果它比单一的API调用更多)找到在文本框,字的位置,这样我可以定位潦草画线undeneath它。

此外,我需要捕获哪些信息以确保重新绘制波形。我目前只使用WM_PAINT,这显然不够好。

编辑(2012年9月3日): 仅供参考,以下是我到目前为止的地方。需要大量精炼的但显示基本原则

https://gist.github.com/3607272

许多THX

小号

+3

这不是一个选项,VB6 TextBox控件根本不支持自定义绘图。您需要购买某种其他控件才能执行此操作。这应该很难,这太古老了。 – 2012-08-16 18:57:32

+0

Thx Hans。那么我使用暴露hWnd(不是VB6文本框?)的第三方控件,以便我可以获取它的hdc并可以继承它。你能解释一些,为什么你认为这是不可能的?这个链接(http://www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textbox/)显示了一些.net调用实现类似的功能。我认为他们在某个时候委托给winapi。我想我只需要知道哪些呼叫正在进行。 TextBoxAPIHelper.PosFromChar发送EM_POSFROMCHAR消息吗? – 2012-08-17 05:13:32

+2

尝试使用闪烁控制,它的自由和开源。它会照顾你所有的这些要求。 http://www.scintilla.org/ScintillaDoc.html – Shubhansh 2012-08-17 07:52:15

回答

0

什么可能的工作是使用自动大小的标签。确保标签和文本框中的字体完全相同。

  1. 检测包含拼写错误的单词的句子之前的行数。
  2. 用问号1中的数字换行符(vbcrlf)填充标签说明。
  3. 将拼写错误的单词(拼写错误的单词)追加到标签标题。
  4. 标签大小现在应该与拼写错误的单词的开头相同。

实施例文本:

This is my first line.
And my second line.
And over here i have my mispeled word.

标签标题输出应为(忽略小点,它们是空行):

.
.
And over here i have my

标签的高度和宽度应匹配在文本框中的位置,除非你有滚动条。如果文本框具有边框,则应该为高度和宽度添加固定值以获得完全匹配。