ExtCreatePen
The ExtCreatePen
function creates a logical cosmetic or geometric pen that has the specified
style, width, and brush attributes.
HPEN ExtCreatePen(
DWORD dwPenStyle, |
// pen style |
DWORD dwWidth, |
// pen width |
CONST LOGBRUSH *lplb, |
// pointer to
structure for brush attributes |
DWORD dwStyleCount, |
// length of array
containing custom style bits |
CONST DWORD *lpStyle |
// optional array
of custom style bits |
); |
|
Parameters
dwPenStyle
Specifies a
combination of type, style, end cap, and join attributes. The values from each
category are combined by using the bitwise OR operator (|).
The pen type
can be one of the following values:
Type |
Description |
PS_GEOMETRIC |
Pen is
geometric. |
PS_COSMETIC |
Pen is
cosmetic. |
The pen style
can be any one of the following values:
Style |
Description |
PS_ALTERNATE |
Windows
NT: Pen sets every other pixel.
(This style is applicable only for cosmetic pens.) Windows
95: Not supported. |
PS_SOLID |
Pen is
solid. |
PS_DASH |
Pen is
dashed. Windows
95: This style is not supported for
geometric lines. |
PS_DOT |
Pen is
dotted. Windows
95: This style is not supported for
geometric lines. |
PS_DASHDOT |
Pen has
alternating dashes and dots. Windows
95: This style is not supported for
geometric lines. |
PS_DASHDOTDOT |
Pen has
alternating dashes and double dots. Windows
95: This style is not supported for
geometric lines. |
PS_NULL |
Pen is
invisible. |
PS_USERSTYLE |
Windows
NT: Pen uses a styling array
supplied by the user. Windows
95: Not supported. |
PS_INSIDEFRAME |
Pen is
solid. When this pen is used in any graphics device interface (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 geometric pens. |
The end cap
is only specified for geometric pens. The end cap can be one of the following
values:
End cap |
Description |
PS_ENDCAP_ROUND |
End caps
are round. |
PS_ENDCAP_SQUARE |
End caps
are square. |
PS_ENDCAP_FLAT |
End caps
are flat. |
The join is
only specified for geometric pens. The join can be one of the following values:
Line
join |
Description |
PS_JOIN_BEVEL |
Joins are
beveled. |
PS_JOIN_MITER |
Joins are
mitered when they are within the current limit set by the SetMiterLimit |
PS_JOIN_ROUND |
Joins are
round. |
Windows 95: The PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE,
PS_ENDCAP_FLAT, PS_JOIN_BEVEL, PS_JOIN_MITER, and PS_JOIN_ROUND styles are
supported only for geometric pens when used to draw paths.
dwWidth
Specifies the
width of the pen. If the dwPenStyle parameter is PS_GEOMETRIC, the width
is given in logical units. If dwPenStyle is PS_COSMETIC, the width must
be set to 1.
lplb
Points to a LOGBRUSH
dwStyleCount
Specifies the
length, in doubleword units, of the lpStyle array. This value must be
zero if dwPenStyle is not PS_USERSTYLE.
lpStyle
Points to an
array of doubleword values. The first value specifies the length of the first
dash in a user-defined style, the second value specifies the length of the
first space, and so on. This pointer must be NULL if dwPenStyle is not
PS_USERSTYLE.
Return Values
If the function
succeeds, the return value is a handle that identifies a logical pen.
If the
function fails, the return value is zero.
Remarks
A geometric
pen can have any width and can have any of the attributes of a brush, such as
dithers and patterns. A cosmetic pen can only be a single pixel wide and must
be a solid color, but cosmetic pens are generally faster than geometric pens.
The width of
a geometric pen is always specified in world units. The width of a cosmetic pen
is always 1.
End cap and
join are only specified for geometric pens.
After an
application creates a logical pen, it can select that pen into a device context
by calling the SelectObject
If dwPenStyle
is PS_COSMETIC and PS_USERSTYLE, the entries in the lpStyle array
specify lengths of dashes and spaces in style units. A style unit is defined by
the device where the pen is used to draw a line.
If dwPenStyle
is PS_GEOMETRIC and PS_USERSTYLE, the entries in the lpStyle array
specify lengths of dashes and spaces in logical units.
If dwPenStyle
is PS_ALTERNATE, the style unit is ignored and every other pixel is set.
If the lbStyle
member of the LOGBRUSH
When an application
no longer requires a specified pen, it should call the DeleteObject
See Also