![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
> しかし、それではテキストを保存する時に、
> 改行コードごと保存してしまいそうなのですが…
自動改行の部分には何らかの目印を付けておいて、保存時に削除すればよいです。
CEdit::FmtLines の解説によると、「2 つのキャリッジ リターンと 1 つのラインフィードから成るソフト改行が単語分割された行の終わりに挿入されます。ハード改行は、1 つのキャリッジ リターンと 1 つのラインフィードから成ります。」だそうです。
がんばって実装してください。
なるほど、そういう手があったんですね。
なんとか、保存時に削除するようにはできました。
ソフト改行を挿入するのもがんばってみます。
No.5
- 回答日時:
#2&3です。
よく調べてみたら、EM_SETRECT なるものがありました。
画面上の表示領域とは別に、書式領域を設定するものです。
コントロールに表示する文字フォントが固定幅であれば、(文字数×文字幅)を領域幅に設定すれば要望通りの動作をするかもしれません。
この回答への補足
Windows 98だからなのか、リッチエディットだからなのかわかりませんが、
どうも、私の環境ではEM_SETRECTは動作しませんでした。
また、EM_SETRECTでは、表示できる領域を制限するだけで、
その制限を越えて入力した場合にはスクロールバーが表示されて、
そのまま入力できるらしいです。
http://www.winapi-database.com/tips/40/
No.4
- 回答日時:
★回答者 No.1 です。
・私のリンク項目で紹介した『EM_FMTLINES』による『ソフト改行文字を挿入する』で
質問者さんの問題は解決しそうですが…。
抜粋:ソフト改行文字とは
・テキストボックスに標準で用意されたワードラップ機能
(テキストボックスの右端で折り返す機能)において、ソフト的に
付加された改行文字を指す。ソフト的に負荷されるだけなので
表示されないし、テキストにも影響しない。
・EM_FMTLINES を使うと、ソフト改行文字を
実際の改行文字に変換できる。
・となっています。
・回答者 No.3 さんの『CEdit::FmtLinesの解説』より、ソフト改行は
『2 つのキャリッジ・リターンと、1 つのラインフィードから成る』
との事です。つまり、通常の改行が『\r\n』ですが、ソフト改行は
『\r\r\n』という事になります。
・以上。回答というよりアドバイスでした。
・がんばって下さいね。
参考URL:http://www.winapi-database.com/Message/EM/EM_FMT …
No.2
- 回答日時:
EM_LIMITTEXT で文字数制限をすると、一行しか入力できなくなります。
#1 さんのおっしゃるように、自分で各行の文字数をチェックして改行コードを挿入するしかなさそうです。
チェックするタイミングとしては、コントロールに EN_CHANGE メッセージが送られた時ということになります。
つまり、一文字入力されるごとに行の文字数をチェックして処理することとなります。
勝手に改行するのはよいのですが、編集で行の文字数が減った場合、次の行と連結しなおして、再度改行コードを挿入しなおすという処理が必要な気がします。
しかも、ユーザが自分で改行した場合(自動改行でない)は、次の行との連結・改行はしないといった考慮も必要になるかと思います。
つまるところ、かなり面倒くさいです。
一行の文字数を制限したい理由はわかりませんが、入力された内容を保存するなどで次の処理に渡す段階で改行を挿入するようにしたほうが、簡単に実装できると思います。
ご回答ありがとうございます。
やはり、自分で改行コードを挿入するしかないのでしょうか?
しかし、それではテキストを保存する時に、
改行コードごと保存してしまいそうなのですが…
とりあえず、やってみることにします。
No.1
- 回答日時:
★1行に入力できる文字数の制限だけはアドバイスします。
・リッチエディットの『EM_GETLIMITTEXT』メッセージで制限できます。
サンプル:
SendMessage( Edit.hWnd, EM_LIMITTEXT, 制限文字数, 0 ); ←リッチエディットのウインドウハンドルの場合
SendDlgItemMessage( hWnd, IDC_RICEDIT, EM_LIMITTEXT, 制限文字数, 0 ); ←ダイアログのコントロールの場合
最後に:
・自動改行の場合はサブクラス化すると出来ます。
・また、入力されている行を取得して自分で文字数を数え、指定の文字数を超えていたら改行コードを
挿入して、入力された行へ文字列を設定する方法が考えられます。が、サブクラス化にくらべ複雑です。
・もちろん、サブクラス化した場合も文字数を数えたりして制御(改行挿入)しますが…。
・あっ、EM_FMTLINES というメッセージを見つけました。→説明によると
『複数行テキストボックスにおいて、ソフト改行文字を設定・削除する』とあります。
これを使えば良さそうですね。
・以上。おわり。
リンク:
・http://www.winapi-database.com/Message/EM/EM_LIM …→『入力可能なバイト数を設定する』
・http://www.winapi-database.com/Message/EM/EM_FMT …→『複数行テキストボックスにおいて、ソフト改行文字を設定・削除する』
参考URL:http://www.winapi-database.com/Message/EM/index. …
この回答への補足
私の説明が悪かったようです。
「一行に入力できる文字数の制限」ではなく、
「複数行のリッチエディットにおいて、何桁目で折り返すか」ということでした。
すいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Evernote Evernote(エバーノート)の文字化け 1 2022/04/05 19:30
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) エクセル セル内の文字数を超えたら自動的に折り返して表示 2 2023/07/24 05:32
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- ビデオカード・サウンドカード ビデオカードの設定を落として使う場合の、モニター文字のぼやけについて 2 2022/08/22 22:41
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
改行について
-
データベースにデータを挿入す...
-
選択したセルでダブルクリック...
-
VBSのADODB.Streamで先頭に「追...
-
【VBA】エクセルで最後の不要な...
-
fscanfについて
-
ExcelVBAでメールを作成してメ...
-
テキストファイルから改行コー...
-
JavaMail,本文中の改行について
-
改行を読み飛ばす
-
マクロでセル内の改行を削除す...
-
「続行するには何かキーを押し...
-
エスケープ文字の復帰(¥r)と...
-
VBS 改行無しのファイル抽出方法
-
文字の入力で横バー上段、中断...
-
全角、半角、改行コードが混在...
-
全角英数文字が嫌われる理由を...
-
、"(ダブルクォーテーション)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
改行について
-
ファイルから読み取った改行文...
-
jsp 改行コードで改行させて表...
-
C++でのCRLFについて
-
エクセルVBA 文字列領域が不足...
-
テキストファイルから改行コー...
-
JavaDoc コメントの改行について
-
最終行の改行について
-
JavaMail,本文中の改行について
-
【VBA】エクセルで最後の不要な...
-
文の改行
-
VBAでCSVをExcelに取り込む時に...
-
ラベル(スタティックテキスト)...
-
改行コード(CR/LF)の設...
-
テキストボックス行の桁数を制...
おすすめ情報