EXTLOGPEN  82OAC0 

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

typedef struct tagEXTLOGPEN {  // exlp

    UINT     elpPenStyle;

    UINT     elpWidth;

    UINT     elpBrushStyle;

    COLORREF elpColor;

    LONG     elpHatch;

    DWORD    elpNumEntries;

    DWORD    elpStyleEntry[1];

} EXTLOGPEN;

 

Members

elpPenStyle

Specifies a combination of pen type, style, end cap style, and join style. The values from each category can be retrieved by using a bitwise AND with the appropriate mask.

The elpPenStyle member 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.

 

The elpPenStyle member 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

The pen will use a styling array supplied by the user.

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. The elpPenStyle member 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. The elpPenStyle member 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 the elpPenStyle member specifies geometric lines, this value is the width, in logical units, of the line. Otherwise, the lines are cosmetic and this value is 1.

elpBrushStyle

Specifies the brush style of the pen. The elpBrushStyle member values can be one of the following:

Value

Description

BS_DIBPATTERN

Specifies a pattern brush defined by a device-independent bitmap (DIB) specification. If elpBrushStyle is BS_DIBPATTERN, the elpHatch member contains a handle to a packed DIB.

BS_DIBPATTERNPT

Specifies a pattern brush defined by a device-independent bitmap (DIB) specification. If elpBrushStyle is BS_DIBPATTERNPT, the elpHatch member contains a pointer to a packed DIB.

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, the SetBkMode1CRGOUH and SetBkColor.D41RH functions determine the background color.

If elpBrushStyle is BS_HOLLOW or BS_PATTERN, elpColor is ignored.

If elpBrushStyle is BS_DIBPATTERN or BS_DIBPATTERNPT, the low-order word of elpColor specifies whether the bmiColors members of the BITMAPINFO.2PXNH structure contain explicit red, green, blue (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 is 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 is a handle to a packed DIB. To obtain this handle, an application calls the GlobalAllocF12W9. function to allocate a block of global memory and then fills the memory with the packed DIB. A packed DIB consists of a BITMAPINFO structure immediately followed by the array of bytes that define the pixels of the bitmap.

If elpBrushStyle is BS_DIBPATTERNPT, the elpHatch member is a pointer to a packed DIB.

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 crosshatch

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 style array in the elpStyleEntry member. 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 it is used as if it repeated 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 lengths are in device units.

 

See Also

BITMAPINFO, ExtCreatePen, GetObject, GlobalAlloc, SetBkColor, SetBkMode