EXTLOGPEN

typedef struct tagEXTLOGPEN { /* exlp */

UINT elpPenStyle;

UINT elpWidth;

UINT elpBrushStyle;

COLORREF elpColor;

LONG elpHatch;

DWORD elpNumEntries;

DWORD elpStyleEntry[1];

} EXTLOGPEN;

The EXTLOGPEN structure defines the pen style, width, brush attributes for an extended pen. This structure is used by the GetObject function when it retrieves a description of a pen that was created when an application called the ExtCreatePen function.

Members

elpPenStyle

Specifies a combination of pen types, styles, end caps, and joins. The values from each category may be retrieved by using a bit-wise AND with the appropriate mask.

elpPenStyle masked with PS_TYPE_MASK has one of the following pen type values:

Value Meaning

PS_GEOMETRIC The pen is geometric.
PS_COSMETIC The pen is cosmetic.

elpPenStyle masked with PS_STYLE_MASK has one of the following pen styles values:

Value Meaning

PS_SOLID The pen is solid.
PS_DASH The pen is dashed.
PS_DOT The pen is dotted.
PS_DASHDOT The pen has alternating dashes and dots.
PS_DASHDOTDOT The pen has alternating dashes and double dots.
PS_NULL The pen is invisible.
PS_USERSTYLE Specifies that a styling array supplied by the user is to be used.
PS_INSIDEFRAME The pen is solid. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure are shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to PS_GEOMETRIC pens.

The following category applies only to PS_GEOMETRIC pens. elpPenStyle masked with PS_ENDCAP_MASK has one of the following end cap values:

Value Meaning

PS_ENDCAP_ROUND Line end caps are round.
PS_ENDCAP_SQUARE Line end caps are square.
PS_ENDCAP_FLAT Line end caps are flat.

The following category applies only to PS_GEOMETRIC pens. elpPenStyle masked with PS_JOIN_STYLE has one of the following join values:

Value Meaning

PS_JOIN_BEVEL Line joins are beveled.
PS_JOIN_MITER Line joins are mitered when they are within the current SetMiterLimit limit. A join is beveled when it would exceed the limit.
PS_JOIN_ROUND Line joins are round.

elpWidth

Specifies the width of the pen.

If elpPenStyle specifies geometric lines, this value is the width of the line in logical units. Otherwise, the lines are cosmetic and this value is one.

elpBrushStyle

Specifies the brush style of the pen. The elpBrushStyle field can be any one of the following styles:

Value Meaning

BS_DIBPATTERN Specifies a pattern brush defined by a device-independent bitmap (DIB) specification.
BS_HATCHED Specifies a hatched brush.
BS_HOLLOW Specifies a hollow or NULL brush.
BS_PATTERN Specifies a pattern brush defined by a memory bitmap.
BS_SOLID Specifies a solid brush.

elpColor

If elpBrushStyle is BS_SOLID or BS_HATCHED, elpColor specifies the color in which the pen is to be drawn. For BS_HATCHED, SetBkMode and SetBkColor determine the background color.

If elpBrushStyle is BS_HOLLOW or BS_PATTERN, elpColor is ignored.

If lpStyle is BS_DIBPATTERN, the low-order word of elpColor specifies whether the bmiColors members of the BITMAPINFO data structure contain explicit RGB values or indexes into the currently realized logical palette. The elpColor value must be one of the following:

Value Meaning

DIB_PAL_COLORS The color table consists of an array of 16-bit indexes into the currently realized logical palette.
DIB_RGB_COLORS The color table contains literal RGB values.

elpHatch

If elpBrushStyle is BS_PATTERN, elpHatch must be a handle to the bitmap that defines the pattern.

If elpBrushStyle is BS_SOLID or BS_HOLLOW, elpHatch is ignored.

If elpBrushStyle is BS_DIBPATTERN, the elpHatch member contains a handle to a packed DIB. To obtain this handle, an application calls the GlobalAlloc function to allocate a block of global memory and then fills the memory with the packed DIB. A packed DIB consists of a BITMAPINFO data structure immediately followed by the array of bytes which define the pixels of the bitmap.

If elpBrushStyle is BS_HATCHED, the elpHatch member specifies the orientation of the lines used to create the hatch. It can be any one of the following values:

Value Meaning

HS_BDIAGONAL 45-degree upward hatch (left to right)
HS_CROSS Horizontal and vertical cross-hatch
HS_DIAGCROSS 45-degree crosshatch
HS_FDIAGONAL 45-degree downward hatch (left to right)
HS_HORIZONTAL Horizontal hatch
HS_VERTICAL Vertical hatch

elpNumEntries

Specifies the number of entries in the user supplied style array elpStyleEntry[]. This value is zero if elpPenStyle does not specify PS_USERSTYLE.

elpStyleEntry[]

Specifies a user supplied style array. The array is specified with a finite length, but is used as if it repeats indefinitely. The first entry in the array specifies the length of the first dash. The second entry specifies the length of the first gap. Thereafter, lengths of dashes and gaps alternate.

If elpWidth specifies geometric lines, the lengths are in logical units. Otherwise, the lines are cosmetic and so lengths are in device units.

See Also

GetObject, ExtCreatePen, LOGBRUSH, LOGPEN, SetBkMode, SetBkColor