====== 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);`と書いても同じ。 ===== 参考 ===== - [[http://kwikwi.cocolog-nifty.com/blog/2006/01/delphi_memo_11a3.html|[Delphi] Memoでキャレット位置に文字列を挿入する]] - [[http://mrxray.on.coocan.jp/Halbow/Chap12.html|第12章 エディットとメモ]] - [[http://www.alato.ne.jp/kazu-/vb/tip28.htm|テキストボックスへの高速な文字列の追加]] - [[https://www.gesource.jp/programming/bcb/14.html|Undo可能なSelTextの変更]] - [[http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.Memo.TMemo_Methods|FMX.Memo.TMemo のメソッド]] - [[http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/!!MEMBERTYPE_Properties_StdCtrls_TMemo.html|TMemo プロパティ]] - [[https://njisho.hatenadiary.org/entry/20140118/1390049617|C++ Builder XE4のFireMonkeyがVCL/CLXと違うところ。]] - [[http://kaitei.net/winapi/window-procedures/|ウィンドウプロシージャ]] - [[https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postmessagea|PostMessageA function]] - [[http://chokuto.ifdef.jp/advanced/function/PostMessage.html|PostMessage(A)]]