我面臨着一個奇怪的問題EM_POSFROMCHAR
。當插入符號位於最後位置時,EM_POSFROMCHAR未返回適當的值
我想在文本控件中獲取當前插入符號位置的客戶區座標。這適用於所有其他情況,但當插入符號位於最後位置時總是返回-1
。
我在C++應用程序(wxWidgets)中這樣做。但爲了讓這裏發佈起來很簡單,我已經創建了一個C++/CLI端口。這裏是相關代碼(爲簡單起見,提取LOWWORD和HIWORD被刪除)。
HWND handle = (HWND) textControl->Handle.ToPointer();
LRESULT rc = ::SendMessage(handle, EM_POSFROMCHAR, textControl->SelectionStart, 0);
MessageBox::Show(rc.ToString());
總是返回-1
。我試圖通過textControl->SelectionStart - 1
,它給了一個合適的價值。由於某種原因,它不適用於最後的位置。這適用於RichText控件。
我想通過.NET框架提供一個API來爲託管客戶端執行此操作。 TextBoxBase.GetPositionFromCharIndex
。該功能也產生與上面解釋的相同的結果。我使用Reflector查看了它,並使用相同的代碼來獲取位置。
我有以下問題。
- 爲什麼在脫字符號位於最後位置時我沒有得到正確的值?
- 如果這是
EM_POSFROMCHAR
的問題,那麼解決此問題的方法是什麼?
我的意圖是在用戶鍵入文本時在插入位置顯示上下文菜單。類似於視覺工作室擁有的東西。
任何幫助,將不勝感激。