Всем доброго времени суток! Нужна помощь. Пишу класс, которому передаешь окно (CWnd), а он на нем рисует график. Проблема в том, что я не могу разобраться с CPaintDC. Как я понял, в каждом методе класса его создавать нельзя, он должен быть одним из полей. А вот как с ним обращаться тогда.. Подскажите пожалуйста.
Код | class PolarGraph { private: CWnd* pWnd; CPaintDC dc(); int Ax; int Ay; int Bx; int By; void DrawRect(); void DrawAxis(); public: PolarGraph(CWnd* pWnd, int Ax, int Ay, int Bx, int By); };
PolarGraph::PolarGraph(CWnd* pWnd, int Ax, int Ay, int Bx, int By) {
this->Ax=Ax; this->Ay=Ay; this->Bx=Bx; this->By=By; this->pWnd=pWnd; CPaintDC* dc = new CPaintDC(pWnd);
DrawRect(); DrawAxis(); }
void PolarGraph::DrawRect() { //CPaintDC dc(pWnd); dc.MoveTo(Ax,Ay); dc.LineTo(Bx,Ay); dc.LineTo(Bx,By); dc.LineTo(Ax,By); dc.LineTo(Ax,Ay); }
void PolarGraph::DrawAxis() { //CPaintDC dc(pWnd); dc.MoveTo(Ax+(Bx-Ax)*0.05,Ay+(By-Ay)*0.5); dc.LineTo(Ax+(Bx-Ax)*0.95,Ay+(By-Ay)*0.5); //pWnd->Invalidate(); }
|
При такой реализации ругается
Код | Error 1 error C2228: left of '.MoveTo' must have class/struct/union
|
Если в каждой функции создавать CPaintDC, то будет рисоваться только первая из двух вызванных (DrawRect()). |