To draw a (cubic) bezier curve you’ll need at least four control points, since each section will make use of four of them to approximate the curve. (EDIT: bad sentence)
In the following code, we’re inside a loop calculating each curvepoint based on the controlpoints. First controlpoint is p_start, and the last is p_start+3. The variable l_t is the interpolator from the bezier curve section start and the bezier curve section end. The interpolator must be increased by the delta distance per curvesegment, which will be 1/sectionsegments.
The next bezier section (not to be confused with a curve-section here) will start at p_start+3 and end at p_start+6, four points. (EDIT: I wrote +7…)
To understand the bezier equation completely, you should make a google search on it.
m_curvepoints[l_curpoint].x = (int)(m_controlpoints[p_start+0].x*(1-l_t)*(1-l_t)*(1-l_t)
+ m_controlpoints[p_start+1].x*3.0*l_t*(1-l_t)*(1-l_t)
+ m_controlpoints[p_start+2].x*3.0*l_t*l_t*(1-l_t)
+ m_controlpoints[p_start+3].x*l_t*l_t*l_t);
m_curvepoints[l_curpoint].y = (int)(m_controlpoints[p_start+0].y*(1-l_t)*(1-l_t)*(1-l_t)
+ m_controlpoints[p_start+1].y*3.0*l_t*(1-l_t)*(1-l_t)
+ m_controlpoints[p_start+2].y*3.0*l_t*l_t*(1-l_t)
+ m_controlpoints[p_start+3].y*l_t*l_t*l_t);
If this doesn’t help, or doesn’t make any sense, I can upload the entire source so you can read through it yourself 
Was this even close to what you were thinking of?
-Trond