あるファイルの文字列(UNICODE文字)を取得し、MFCのエディットボックスに
表示させるアプリケーションの作成中です。
データとデータの間にスペースを入れて
一列に3つのデータを表示して改行、とさせたいのです。
データの取得、表示は上手くいくのですが、データ1(英数字)の
長さによってデータ間のスペースが均等にならず、データ2の表示位置が
ずれてしまいます。以下のように綺麗にしたいのですが。。。
○)*********************************
データ1 データ2 データ3
de-タ1 データ2 データ3
Data1 データ2 データ3
;
×)*****************************現状
データ1 データ2 データ3
de-タ1 データ2 データ3
Data1 データ2 データ3
;
wcslen関数を用いてデータ1の長さを取得し、最長の文字列 + スペース分と
均等になるよう足りない分は半角スペースで詰めました。
が、それでも大文字と小文字、ひらがなと英数字の表示幅によりデータ2の開始位置が
ずれてしまいます。
綺麗に整えるよう表示するにはどのように実装すればよいでしょうか?
私の考えとしては、大文字、小文字がそれぞれデータ1にいくつあるか調べて
スペースで補う、といった考えなのですが、もっと解り易くスマートな方法はありますか?
皆様の知恵をお貸し下さい。
OS: XP SP2
コンパイラ:VisualStudio 2005
固定幅フォント使ってますか?
いえ、使っておりません。
たとえば「i」も「あ」も同じ幅で表示されるのならいいのですが。。。
固定幅フォント使わないとたとえば i と M の幅が異なるので
いっくら(半角文字数+全角文字数×2)で計算してもガタガタになりますよ?
重大なヒントをありがとうございます。
無事解決できました。