CEditViewで色々なこと・・・?

解決


MFC  2003-07-04 16:46:38  No: 51666  IP: [192.*.*.*]

改行(↓)や[EOF]などの制御文字を記号で表示するにはどうすればよいでしょうか?あと、行番号も左に追加したいのですがどうすればいいですか?よろしくお願いします。

編集 削除
YuO  2003-07-04 17:38:00  No: 51667  IP: [192.*.*.*]

どちらもEditコントロールではできません。
Rich Editでもできたかどうか……。

編集 削除
MFC  2003-07-08 11:24:59  No: 51668  IP: [192.*.*.*]

では、ほかのエディタはそれをどうやって実現させてるんですか?

編集 削除
masaki  2003-07-08 17:12:37  No: 51669  IP: [192.*.*.*]

CView派生で、自前でビューを実装しているのだと思いますが。

編集 削除
YuO  2003-07-08 17:30:38  No: 51670  IP: [192.*.*.*]

MFCすら使っていないこともしばしば……。
Spy++でクラス名を調べてみるとよいかも。

もともと,EDITコントロールは長い文字列の編集には向きません。
#95系では64K文字しか編集できないし。

編集 削除
NEMO  2003-07-09 16:27:26  No: 51671  IP: [192.*.*.*]

RichEditなら改行表示も行番号も表示させることは可能。

MFCの場合だったらOnPaintをオーバーライドして、
とりあえずCRichEditView::OnPaint()を呼んでテキストを表示させ
その後必要な文字を描画すればいい。

改行記号ならGetRichEditCtrl().FindText()で"\n"を検索、
GetRichEditCtrl().GetCharPos()でその座標を取得。
その位置にDrawText()すればよい。

行番号の場合はSetRect()で左側にマージン作ってそこに行番号を書いていけばよい。

リッチエディットの場合文字の大きさが可変なのでそこらへんちゃんと考慮しないと表示がおかしくなる。

編集 削除
MFC  2003-07-10 08:59:52  No: 51672  IP: [192.*.*.*]

どうも、皆さんありがとうございました。
また、質問すると思いますのでよろしくお願いします。

編集 削除