Windows Mobile 6.5
A version of this page is also available for

This function creates a logical pen that has the specified style, width, and color. The pen can subsequently be selected into a device context and used to draw lines and curves.

HPEN CreatePen( 
  int fnPenStyle, 
  int nWidth, 
  COLORREF crColor


[in] Specifies the pen style. It can be any one of the following values.

Value Description


Pen is solid.


Pen is dashed.

This style is valid only when the pen width is one or less in device units.


Pen is invisible.


[in] Specifies the width of the pen, in logical units.

If nWidth is zero, the pen is a single pixel wide, regardless of the current transformation.

CreatePen returns a pen with the specified width bit with the PS_SOLID style if you specify a width greater than one for the PS_DASH style.


[in] Specifies a color reference for the pen color.

Handle to a logical pen indicates success. NULL indicates failure. To get extended error information, call GetLastError.

After an application creates a logical pen, it can select that pen into a device context by calling the SelectObject function. After a pen is selected into a device context, it can be used to draw lines and curves.

If the value specified by the nWidth parameter is zero, a line drawn with the created pen will always be a single pixel wide regardless of the current transformation.

If the value specified by nWidth is greater than 1, the fnPenStyle parameter must be PS_NULL or PS_SOLID.

User-specified endcap styles, such as PS_ENDCAP_ROUND, are not supported.

When you no longer need the pen, call the DeleteObject function to delete it.

Windows Embedded CEWindows CE 2.0 and later
Windows MobileWindows Mobile Version 5.0 and later