CEditView modeでテキストを出力するには?

[戻る]
はながわ 2002/10/02(水) 15:47:42
初めまして。VC5を使っている者です。
CEditView モードでのテキストの出力の仕方がわかりません。
現在のカーソル位置から文字列を出力したいのですが。

たとえばOnDraw関数の中で、

CEdit* a;
a->ReplaceSel("mojiretu" , FALSE)

としてもコンパイルできますが出力できませんでした。
おそらくOnDraw関数の中に書いたというのが誤りだと思うのですが。
(すいませんメッセージマップについてはまだよく理解していません)

勿論TextOut関数は使えません。
よろしくお願いします。

MASATO [E-Mail] [HomePage] 2002/10/02(水) 22:59:49
VC++6.0では

CEditViewクラスのメンバ関数GetEditCtrlを使って、
GetEditCtrl().ReplaceSel(...);

でできます。OnDrawの中で行う必要はありません。
(OnDrawの中で行うと悲惨なことになりそうです。)

はながわ 2002/10/03(木) 02:29:27
レスありがとうございました。
GetEditCtrl().ReplaceSel(...);
という命令をどこにかけばよろしいでしょうか?
今のところ、どこに書いても何も出力されない状態なのですが・・・

wood 2002/10/03(木) 05:57:08
大変失礼なことかも知れませんけど

>a->ReplaceSel("mojiretu" , FALSE)>GetEditCtrl().ReplaceSel(...);
の後
または関数の最後(return や }の直前)で

UpdateData(FALSE);
行ってますか、Viewの更新処理です

MASATO [E-Mail] [HomePage] 2002/10/03(木) 08:05:04
> 今のところ、どこに書いても何も出力されない状態なのですが・・・
どこに書きましたか?
また、何も出力されない状態とは、
エラーも何も発生しないが文字が表示されないという状態ですか?

OnInitialUpdateであれば問題無いはずです。

まずはReplaceSelではなくSetWindowTextを試してみてもよいでしょう。
-----
GetEditCtrl().SetWindowText("...");
-----

SetWindowTextがOKでReplaceSelがNGならば別の問題です。

はながわ 2002/10/04(金) 00:20:58
[[解決]]
皆様ありがとうございました。
OnInitialUpdateのなかで
ReplaceSel、SetWindowTextともに解決しました。
またよろしくお願いします。

古いスレッドには追加発言できません。