We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.


Draws a set of line segments and Bzier splines.

BOOL PolyDraw( 
   const POINT* lpPoints, 
   const BYTE* lpTypes, 
   int nCount  


Points to an array of POINT data structures that contains the endpoints for each line segment and the endpoints and control points for each Bzier spline.


Points to an array that specifies how each point in the lpPoints array is used. Values can be one of the following:

  • PT_MOVETO   Specifies that this point starts a disjoint figure. This point becomes the new current position.

  • PT_LINETO   Specifies that a line is to be drawn from the current position to this point, which then becomes the new current position.

  • PT_BEZIERTO   Specifies that this point is a control point or ending point for a Bzier spline.

    PT_BEZIERTO types always occur in sets of three. The current position defines the starting point for the Bzier spline. The first two PT_BEZIERTO points are the control points, and the third PT_BEZIERTO point is the ending point. The ending point becomes the new current position. If there are not three consecutive PT_BEZIERTO points, an error results.

    A PT_LINETO or PT_BEZIERTO type can be combined with the following constant by using the bitwise operator OR to indicate that the corresponding point is the last point in a figure and the figure is closed:

  • PT_CLOSEFIGURE   Specifies that the figure is automatically closed after the PT_LINETO or PT_BEZIERTO type for this point is done. A line is drawn from this point to the most recent PT_MOVETO or MoveTo point.

    This flag is combined with the PT_LINETO type for a line, or with the PT_BEZIERTO type of ending point for a Bzier spline, by using the bitwise OR operator. The current position is set to the ending point of the closing line.


Specifies the total number of points in the lpPoints array, the same as the number of bytes in the lpTypes array.

Nonzero if the function is successful; otherwise 0.

This function can be used to draw disjoint figures in place of consecutive calls to CDC::MoveTo, CDC::LineTo, and CDC::PolyBezierTo member functions. The lines and splines are drawn using the current pen, and figures are not filled. If there is an active path started by calling the CDC::BeginPath member function, PolyDraw adds to the path. The points contained in the lpPoints array and in lpTypes indicate whether each point is part of a CDC::MoveTo, a CDC::LineTo, or a CDC::BezierTo operation. It is also possible to close figures. This function updates the current position.

See the example for CDC::BeginPath.

Header: afxwin.h