2009-06-05 15 views
0

SystemParametersInfo()SPI_GETNONCLIENTMETRICSを使用してデフォルトのシステムフォントサイズを検索しようとしています。SystemParametersInfoの動作がVistaとXPで異なる

私はXP、lfHeight(およびlfWidth)に正確に同じアプリケーションを実行するときに返さNONCLIENTMETRICS内部LOGFONT構造は、実際に、lfHeightで正しいフォントの高さを持っているVistaでいる間は常にゼロです。

なぜそうであり、両方のシステムでフォントサイズを取得する正しい方法は何ですか?

答えて

0

私は100%正しい答えを知らないが、MSDNによると、ゼロの値がlfHeightとlfWidthの両方のために特別な意味を持っています

これはMSDNから取得され、article WindowsのGDI、「LOGFONT」

lfHeight - if 0 - フォントマッパーは一致するものを検索するときにデフォルトの高さの値を使用します。

lfWidth - lfWidthが0の場合、デバイスのアスペクト比は、使用可能なフォントのデジタル化アスペクト比と一致し、最も近い一致を検出します。差の絶対値によって決まります。

1

NONCLIENTMETRICSsizeof(NONCLIENTMETRICS)のメンバーをcbSizeに設定していますか? MSDNによれば、ランタイムシステムのバージョンチェックが必要です.Windows XPで動作させる場合は、iPaddedBorderWidthのサイズを引いてください。

関連する問題