• ベストアンサー

改行を含まない文字数を取得するには?

エディットボックスに入力された文字数をGetWindowTextLength関数で取得した時 < 例 >  aaaaああああいいいい と入力した場合 結果は12 aaaa ああああ いいいい    と入力した場合 結果は16 というように同じ文字数なのに改行を含むと改行1につき2文字分多くカウントされてしまいます。 複数行入力されていても改行文字を含まない文字数を取得するにはどうすればいいですか? --- 実行環境 --- Visual Studio 2010 Express WIN32 ユニコードビルド C言語

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8499/18196)
回答No.1

SendMessage( hwndEdit, EM_GETLINECOUNT, 0, 0) ; で行数を取得して,文字数を調節してやればいいんじゃないの?

nazoda
質問者

お礼

行数を取得する方法でやる方法をよく考えてみたら次の方法でできました。 GetWindowTextLength(hedit)-(SendMessage( hedit, EM_GETLINECOUNT, 0, 0)-1)*2) ヒントをありがとうございました。

nazoda
質問者

補足

回答ありがとうございます。EM_GETLINECOUNTを使って行数を取得する方法では最後の行を改行だけした場合と、改行しない場合の結果が違う結果になってしまいます。改行してもしなくても入力されている文字列の行数は変わらないのだから両方とも同じ結果にならなければうまく文字数を調節できないと思うのですが・・・。 また、何も入力していない状態と何か入力した場合も同じ一行としてカウントされるようです。行数を取得した後の文字数の調節はどのようにすればいいのですか?

その他の回答 (1)

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.2

GetWindowText関数ではどうですか。 --- 関数が成功すると、コピーされた文字列の文字数が返ります( 終端の NULL 文字は含められません)。 https://msdn.microsoft.com/ja-jp/library/cc364815.aspx

nazoda
質問者

補足

回答ありがとうございます。 GetWindowText関数も使ってみましたがやはり改行を含むと正確な文字数が返されませんでした。

関連するQ&A