2012-08-16 90 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

標籤的高度和寬度應匹配在文本框中的位置,除非你有滾動條。如果文本框具有邊框,則應該爲高度和寬度添加固定值以獲得完全匹配。