初歩的なことで申し訳ないのですが、
読み込んだファイルのデータをリッチエディタに
追記していきたいのですが、
何か良い関数、または方法はありませんか?
すいませんが、教えて下さい。
リッチエディタって何ですか。
ごめんなさい。
タイトルを読んでいませんでした。
リッチエディットですね。
2.0かどうか分かりませんが、基本的にエディットボックスと同じです。
もし、今m_richeditに、「ゴスペ」と表示されているとすると、
UpdateDate(TRUE);
m_richedit = m_richedit+"ラッツ";
UpdateDate(FALSE);
で、「ゴスペラッツ」と表示されます。
もし改行を挟むなら、先頭で
char crlf[]="\x0d\x0a";
としておいて、
m_richedit = m_richedit+crlf+"ラッツ";
です。
ReplaceSel というのもあります。
int end = m_rich.GetWindowTextLength();
m_rich.SetSel(end,end);
m_rich.ReplaceSel(追加したい文字列);
hogeさん、ご解答ありがとうございます。
すいません。間違えました。
エディタではなくエディットですね。
今、リソースのダイアログにリッチエディットを貼り付けて、
SetDlgItemText()で表示してみたのですが、
この関数を使用すると新しく表示されて以前の文字列は消えてしまっている
ようなので、調べてました。
このようなやり方でも教えて頂いた方法をとれますか?
度々、すいませんがアドバイスよろしくお願いします。
SetDlgItemTextはそういう動作になります。
SetDlgItemTextでもできますが、文字数が多いといろいろと問題があるので
今回は、dairygoods さんの ReplaceSel をつかい
CRichEditCtrl* pEdit = this->GetDlgItem( ID〜〜〜 );
const int end = pEdit->GetWindowTextLength();
pEdit->SetSel( end, end ); // 一番最後に持ってくる
pEdit->ReplaceSel( 追加したい文字列 );
てかんじでしょうか。
hogeさん、dairygoodsさん Blueさん
アドバイスありがとうございます。
早速教えて頂いた方法を試してみます。
ありがとうございます。
> CRichEditCtrl* pEdit = this->GetDlgItem( ID〜〜〜 );
これはキャストが必要でした。GetDlgItemの戻り値は CWnd* ですからね。
度々申し訳ないのですが、教えて下さい。
教えて頂いた記述の中で、
CRichEditCtrl* pEdit = this->GetDlgItem( ID〜〜〜 );
とありますが、thisというのはポインタですか?
コンパイラでグローバル関数にアクセスするための
"this"ポインタがありません。っといわれてしまうのですが、
なにか宣言等が必要なのでしょうか?
本当に申し訳ないですが、ご教授頂けないでしょうか?
MFCではなのでしょうか?
thisはダイアログそのものを指します。
環境をきちんと明記しましょう。
OS、コンパイラのバージョン、プロジェクトの種類等
すいません。
環境は、
OS : Windows2000 SP4
Ver : VC6.0
プロジェクト : Win32Application
です。
最初に記述しないでごめんなさい。
では、this-> はいりません。
HWND hEdit = GetDlgItem( ダイアログのハンドル, リッチエディットのID );
で取得したハンドルに
EM_SETSELメッセージとEM_REPLACESELメッセージを送ってください。
const int end = GetWindowTextLength( hEdit );
SendMessage( hEdit, EM_SETSEL, ( WPARAM )end, ( LPARAM )end );
SendMessage( hEdit, REPLACESEL, ( WPARAM )0, ( LPARAM)"追加する文字" );
見たいな感じ。(適当なので、詳細はMSDNで調べてください)
> SendMessage( hEdit, REPLACESEL, ( WPARAM )0, ( LPARAM)"追加する文字" );
訂正
SendMessage( hEdit, EM_REPLACESEL, ( WPARAM )0, ( LPARAM)"追加する文字" );
連続投稿スイマセン。
EM_SETSELはEM_EXSETSELかも。
EM_EXSETSELの場合はパラメタが違うので気をつけてください。
Blueさん、
本当にありがとうございます。
早速、試してみます。
Blueさん、みなさん、
教えて頂いた処理で思っていた通りに動作しました。
ありがとうございます。
ご丁寧にご教授頂き、本当に助かりました。
ツイート | ![]() |