電子書籍の厳選無料作品が豊富!

こんばんわ。
エディットへSetWindowTextで下記の文字を表示させた時、
文字の幅が異なってしまうのは、なぜでしょうか?

例えば、
「あいうえおかきくけこ」だと日本語10文字なので、
「-」が20個並んでいる幅と同じはず?
しかし実際には、

あいうえおかきくけこ
--------------------

とずれてしまう。

解る方がいらしたら、ご教授ください。

A 回答 (3件)

フォントには「等幅フォント」と「プロポーショナルフォント」があります。


「等幅フォント」は「MSゴシック」「MS明朝」、
「プロポーショナルフォント」は「MSPゴシック」「MSP明朝」、などがあります。

エディットボックスに設定するのであれば、
1.GetFont()で現在の情報を参照し、
2.CFontオブジェクトを作成します。
3.それをSetFont()で設定すればよいのです。

1.で「プロポーショナルフォント」が取得されるので、
2.で1.に対応する「等幅フォント」を作成します。

こんな感じでわかりますかね。

この回答への補足

CreateFontでも適当に書いたら出来ました。
「プロポーショナルフォント」って初めて聞いた言葉でしたが、
調べて理解する事が出来ました。

きっと、自分が書いた以外の方法もあるんでしょうね。
みなさん、ありがとう♪

補足日時:2002/08/04 03:38
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
上記手順だとMFCでの手順ですね。
自分は、SDKですが、調べてみたかぎり、
1、GetFontDataでフォントデータを取得。
2、GetDCで対応するフォントを選択。
3、SetWindowTextで文字を表示。

こんな感じで良いですよね。
なんだかフォント情報を取得できそうな関数がけっこうあって?迷ってます。
う~ん、GetFontLanguageInfoなんてのも使えそうです。

考え方として、大変参考になりました。
とりあえず、試してみます。

お礼日時:2002/08/04 00:59

今PCで広く使われているフォントは一文字の巾が固定されていません。


字画などで狭くなったり広くなったりしています。
例:
WWWWWWWWWW
IIIIIIIIII
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
これで原因がつかめました。

お礼日時:2002/08/04 00:42

> 文字の幅が異なってしまうのは、なぜでしょうか?



等幅フォントじゃナイからでしょう。

> 「あいうえおかきくけこ」だと日本語10文字なので、
> 「-」が20個並んでいる幅と同じはず?

誤りです。
1バイト文字の幅を2倍したら2バイト文字、ではありません。
いわゆる「横倍角」でも1バイトは1バイトです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
誤った認識をしていました。
デフォルトでは、等幅フォントじゃないんですね・・・

お礼日時:2002/08/04 00:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!