0

SystemParametersInfo()withを使用して、デフォルトのシステム フォント サイズを見つけようとしていますSPI_GETNONCLIENTMETRICS

Vista ではLOGFONT、返された 内の構造体はNONCLIENTMETRICS実際には正しいフォントの高さを持っていますが、lfHeightXP でまったく同じアプリを実行すると、lfHeight(およびlfWidth) は常にゼロになります。

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

4

2 に答える 2

1

cbSizeのメンバをNONCLIENTMETRICSに設定していsizeof(NONCLIENTMETRICS)ますか? MSDNによると、ランタイム システムのバージョン チェックが必要であり、 iPaddedBorderWidthWindows XP で実行する場合は のサイズを差し引きます。

于 2011-03-22T03:17:05.163 に答える
0

100% の正解はわかりませんが、MSDN によると、ゼロの値は lfHeight と lfWidth の両方に対して特別な意味を持ちます。

これは MSDN の記事、 Windows GDI、「LOGFONT」からの抜粋です。

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

lfWidth - lfWidth が 0 の場合、デバイスの縦横比が使用可能なフォントのデジタル化縦横比と照合され、差の絶対値によって決定される最も近い一致が検出されます。

于 2009-06-05T14:36:30.137 に答える