EXTLOGPEN 構造体 (wingdi.h)

EXTLOGPEN 構造体は、拡張ペンのペン スタイル、幅、およびブラシ属性を定義します。 この構造体は、アプリケーションが ExtCreatePen 関数を呼び出したときに作成されたペンの説明を取得するときに、GetObject 関数によって使用されます。

構文

typedef struct tagEXTLOGPEN {
  DWORD     elpPenStyle;
  DWORD     elpWidth;
  UINT      elpBrushStyle;
  COLORREF  elpColor;
  ULONG_PTR elpHatch;
  DWORD     elpNumEntries;
  DWORD     elpStyleEntry[1];
} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;

メンバー

elpPenStyle

ペンの種類、スタイル、エンド キャップ スタイル、結合スタイルの組み合わせ。 各カテゴリの値は、適切なマスクを持つビットごとの AND 演算子を使用して取得できます。

PS_TYPE_MASK でマスクされた elpPenStyle メンバーには、次のいずれかのペンの種類の値があります。

意味
PS_GEOMETRIC ペンは幾何学的です。
PS_COSMETIC ペンは化粧用です。
 

PS_STYLE_MASK でマスクされた elpPenStyle メンバーには、次のいずれかのペン スタイル値があります。

意味
PS_DASH ペンは破線で表示されます。
PS_DASHDOT ペンにはダッシュとドットが交互に表示されます。
PS_DASHDOTDOT ペンには、ダッシュと二重ドットが交互に表示されます。
PS_DOT ペンは点線で表示されます。
PS_INSIDEFRAME ペンは実線です。 外接する四角形を受け取る GDI 描画関数でこのペンを使用すると、ペンの幅を考慮して、外接する四角形に完全に収まるように図形の寸法が縮小されます。 これは、PS_GEOMETRICペンにのみ適用されます。
PS_NULL ペンは非表示です。
PS_SOLID ペンは実線です。
PS_USERSTYLE ペンは、ユーザーが指定したスタイル配列を使用します。
 

次のカテゴリは、PS_GEOMETRICペンにのみ適用されます。 PS_ENDCAP_MASK でマスクされた elpPenStyle メンバーには、次のいずれかのエンド キャップ値があります。

意味
PS_ENDCAP_FLAT ライン エンド キャップはフラットです。
PS_ENDCAP_ROUND 線の端のキャップは丸い。
PS_ENDCAP_SQUARE 線の端のキャップは正方形です。
 

次のカテゴリは、PS_GEOMETRICペンにのみ適用されます。 PS_JOIN_MASK でマスクされた elpPenStyle メンバーには、次のいずれかの結合値があります。

意味
PS_JOIN_BEVEL 線結合は面取りされます。
PS_JOIN_MITER 行結合は、 SetMiterLimit 関数によって設定された現在の制限内にある場合にマイタされます。 結合は、制限を超えると面取りされます。
PS_JOIN_ROUND 行結合は丸めになります。

elpWidth

ペンの幅。 elpPenStyle メンバーがPS_GEOMETRIC場合、この値は論理単位での行の幅になります。 それ以外の場合、線は外観が変更され、この値は 1 です。これは、1 ピクセルの幅を持つ線を示します。

elpBrushStyle

ペンのブラシ スタイル。 elpBrushStyle メンバー値には、次のいずれかを指定できます。

意味
BS_DIBPATTERN DIB 仕様で定義されたパターン ブラシを指定します。 elpBrushStyle がBS_DIBPATTERN場合、elpHatch メンバーには、パックされた DIB へのハンドルが含まれます。 詳細については、elpHatch のディスカッションを参照してください。
BS_DIBPATTERNPT DIB 仕様で定義されたパターン ブラシを指定します。 elpBrushStyle がBS_DIBPATTERNPT場合、elpHatch メンバーには、パックされた DIB へのポインターが含まれます。 詳細については、 elpHatch のディスカッションを参照してください。
BS_HATCHED ハッチ付きブラシを指定します。
BS_HOLLOW 中空または NULL ブラシを指定します。
BS_PATTERN メモリ ビットマップによって定義されるパターン ブラシを指定します。
BS_SOLID ソリッド ブラシを指定します。

elpColor

elpBrushStyle がBS_SOLIDまたはBS_HATCHED場合、elpColor はペンを描画する色を指定します。 BS_HATCHEDでは、 SetBkMode 関数と SetBkColor 関数によって 背景色が決まります。

elpBrushStyle がBS_HOLLOWまたはBS_PATTERN場合、elpColor は無視されます。

elpBrushStyle がBS_DIBPATTERNまたはBS_DIBPATTERNPT場合、elpColor の下位ワードは、BITMAPINFO 構造体の bmiColors メンバーに、現在実現されている論理パレットに明示的な RGB 値またはインデックスを含めるかどうかを指定します。 elpColor 値は、次のいずれかである必要があります。

意味
DIB_PAL_COLORS カラー テーブルは、現在実現されている論理パレットに 16 ビット インデックスの配列で構成されます。
DIB_RGB_COLORS カラー テーブルには、リテラル RGB 値が含まれています。
 

RGB マクロを使用して COLORREF 構造体を生成します。

elpHatch

elpBrushStyle がBS_PATTERN場合、elpHatch はパターンを定義するビットマップへのハンドルです。

elpBrushStyle がBS_SOLIDまたはBS_HOLLOW場合、elpHatch は無視されます。

elpBrushStyle がBS_DIBPATTERN場合、elpHatch メンバーはパックされた DIB へのハンドルです。 このハンドルを取得するために、アプリケーションは、GMEM_MOVEABLEを使用して GlobalAlloc 関数 (または LMEM_MOVEABLE を持つ LocalAlloc ) を呼び出してメモリ ブロックを割り当て、そのメモリにパックされた DIB を格納します。 パックされた DIB は 、BITMAPINFO 構造体の直後に、ビットマップのピクセルを定義するバイト配列で構成されます。

elpBrushStyle がBS_DIBPATTERNPT場合、elpHatch メンバーはパックされた DIB へのポインターです。 ポインターは、 localAlloc によって作成されたメモリ ブロックから派生LMEM_FIXED、GMEM_FIXEDが設定された GlobalAlloc によって作成されるか、 LocalLock (handle_to_the_dib) などの呼び出しによって返されるポインターです。 パックされた DIB は 、BITMAPINFO 構造体の直後に、ビットマップのピクセルを定義するバイト配列で構成されます。

elpBrushStyle がBS_HATCHED場合、elpHatch メンバーはハッチングの作成に使用される線の向きを指定します。 次のいずれかの値を指定できます。

意味
HS_BDIAGONAL 45 度上向きハッチ (左から右)
HS_CROSS 水平および垂直のクロスハッチ
HS_DIAGCROSS 45 度のクロスハッチ
HS_FDIAGONAL 45度下向きハッチ(左から右)
HS_HORIZONTAL 水平ハッチ
HS_VERTICAL 垂直ハッチ

elpNumEntries

elpStyleEntry メンバーのスタイル配列内のエントリの数。 elpPenStyle でPS_USERSTYLEが指定されていない場合、この値は 0 になります。

elpStyleEntry[1]

ユーザー指定のスタイル配列。 配列は有限の長さで指定されますが、無期限に繰り返されるかのように使用されます。 配列の最初のエントリは、最初のダッシュの長さを指定します。 2 番目のエントリは、最初のギャップの長さを指定します。 その後、ダッシュとギャップの長さが交互になります。

elpWidth で幾何学的な線が指定されている場合、長さは論理単位になります。 それ以外の場合、線は化粧品であり、長さはデバイス単位です。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header wingdi.h (Windows.h を含む)

こちらもご覧ください

BITMAPINFO

COLORREF

ExtCreatePen

GetObject

ペンの構造

ペンの概要

RGB

SetBkColor

SetBkMode