• ベストアンサー

TEXTMETRIC構造体メンバ tmHeight の単位

データを印刷するプログラムを作成しています。 印刷する直前に GetTextMetrics 関数を呼びフォント情報を得て印刷していますが、 メンバである tmHeight の単位がよくわかりません。 家にある環境では tmHeight = 100 です。 A4の紙に試しに印刷したところ 68行印刷できたので 現在は A4サイズ = 6800 であると仮定してプログラムを組んでいますが どうも気分が悪いです。 どなたかこのモヤモヤを解消していただけないでしょうか?

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

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

プリンタによって同じフォント使ってもサイズが異なっているはずですWindowsの話になりますがGetDeviceCapsで用紙の印字可能範囲なども取得可能です アプリでプリンタを限定するなら固定にしてもいいと思いますが 複数のプリンタや用紙サイズに対応させるのであれば 印字可能な範囲を求めた上でフォントサイズを調整する必要があります そのプリンタが他のアプリケーションやPCから使われたりしてると 何も設定していない場合その前に印刷された設定情報が引き継がれて 意図しない印字結果になることがあります

nagotaro77
質問者

お礼

無事、GetDeviceCaps関数(http://msdn.microsoft.com/ja-jp/library/cc428670.aspx)の第二引数に VERTRES を渡す事で必要な値を取得する事ができました。ありがとうございます。