0

MSDN ドキュメントEnumFontFamiliesExによると、関数の最初のパラメーターは次のように説明されています。

hdc [in]
フォントを列挙するデバイス コンテキストへのハンドル。

  1. 正確にはどういう意味ですか?
  2. デバイス コンテキストとは何ですか?
  3. デバイス コンテキストをフォントに関連付ける必要があるのはなぜですか?
4

3 に答える 3

2

質問 (3) は、説明を見つけるのが正当に困難なことですが、その理由は十分に単純です。

一部のデバイスは、独自のフォント サポートを提供します。たとえば、PostScript プリンタでは PostScript フォントを使用できます。しかし、それらの同じフォントは、画面上でレンダリングしたり、PostScript をサポートしていない別のプリンターでレンダリングしたりする場合には使用できません。もう 1 つの例は、プロッタ (電動ペン) ではストロークの太さが固定されたベクター フォントが必要なため、そのようなデバイスではラスター フォントを使用できない場合です。

GetDeviceCapsデバイス固有のフォント サポートに関心がある場合は、その機能について知りたいと思うでしょう。

于 2013-05-15T05:00:18.180 に答える
1

Microsoft には、デバイス コンテキストに関する他の記事があります。

https://docs.microsoft.com/en-us/windows/win32/gdi/about-device-contexts

アプリケーションは、特定のデバイス ドライバーを読み込むように GDI に通知する必要があります。ドライバーが読み込まれたら、描画操作 (線の色と幅、ブラシのパターンと色、フォントの書体、クリッピング領域、等々)。これらのタスクは、デバイス コンテキスト (DC) を作成して維持することによって実行されます。DC は、一連のグラフィック オブジェクトとそれに関連する属性、および出力に影響するグラフィック モードを定義する構造です。グラフィック オブジェクトには、線画用のペン、塗りつぶし用のブラシ、画面の一部をコピーまたはスクロールするためのビットマップ、使用可能な色のセットを定義するためのパレット、クリッピングおよびその他の操作用の領域、およびペイントおよび描画操作。ほとんどの構造とは異なり、アプリケーションが DC に直接アクセスすることはありません。代わりに、さまざまな関数を呼び出すことによって間接的に構造を操作します。

明らかに、フォントは一種の描画です。

于 2013-05-15T04:58:50.303 に答える
1

Windows API では、ハンドルの概念が広範に使用されています。ハンドルは、API リソースにアクセスするためのトークンとして使用できる整数値です。これはポインタではありませんが、一種の「this」ポインタと考えることができます。

デバイス コンテキストは、描画またはグラフィックスの表示が可能なものを表す Windows API 内のオブジェクトです。それは、プリンター、ビットマップ、画面、またはグラフィックスの作成が意味のあるその他のコンテキストである可能性があります。Windows では、フォントを使用する前にデバイス コンテキストで選択する必要があります。特定のデバイス コンテキストで現在使用できるフォントを調べるために、それらを列挙できます。そこで EnumFontFamiliesEx の出番です。

于 2013-05-15T04:59:40.620 に答える