TMemoでキャレット位置に文字列を表示する ==================================== [[devtool/ide/cpp_builder-rad_studio/start|C++Builder]]でTMemoのカーソル位置に文字を表示したい。Windowsメッセージを使った方法では[[programing/cpp_builder/cpp_builder-unicode|Unicode対応]]の関係か、英数字は表示できるがカナ文字などは文字化けした。 SelTextプロパティ代入に変更 -------------------------- 以下の方法で、無事に動かせた。 String text = L"文字列"; Memo->Perform(EM_REPLACESEL, 0, (LPARAM)text.c_str()); // SendMessage ↓ Memo->SelText = text; 補足 ---- * `Memo->Perform`の行は、`PostMessage(Main->Handle, EM_REPLACESEL, (WPARAM)text.c_str(), 0);`と書いても同じ。 参考 ---- 1. [[http://kwikwi.cocolog-nifty.com/blog/2006/01/delphi_memo_11a3.html|[Delphi] Memoでキャレット位置に文字列を挿入する]] 2. [[http://mrxray.on.coocan.jp/Halbow/Chap12.html|第12章 エディットとメモ]] 3. [[http://www.alato.ne.jp/kazu-/vb/tip28.htm|テキストボックスへの高速な文字列の追加]] 4. [[https://www.gesource.jp/programming/bcb/14.html|Undo可能なSelTextの変更]] 5. [[http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.Memo.TMemo_Methods|FMX.Memo.TMemo のメソッド]] 6. [[http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/!!MEMBERTYPE_Properties_StdCtrls_TMemo.html|TMemo プロパティ]] 7. [[https://njisho.hatenadiary.org/entry/20140118/1390049617|C++ Builder XE4のFireMonkeyがVCL/CLXと違うところ。]] 8. [[http://kaitei.net/winapi/window-procedures/|ウィンドウプロシージャ]] 9. [[https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postmessagea|PostMessageA function]] 10. [[http://chokuto.ifdef.jp/advanced/function/PostMessage.html|PostMessage(A)]]