class TextBoxElement
{
public:
        virtual void Draw(CDC* pDC)
        {
                CRichEditCtrl* pRichEditCtrlContext =  m_pView->GetRichEditCtrlContextPtr();
                RTFUtil::DrawRTF(pRichEditCtrlContext, ...);
                m_pView->InvalidateRect(...);
        }
private:
        CTestView* m_pView; // 위의 경우 때문에 윈도우가 필요
}

class LineElement
{
public:
        virtual void Draw(CDC* pDC)
        {
                //loop
                        pDC->LineTo(...);
                //loop end
        }
}

class TextBoxElementCreateController
{
public:
        bool On_LButtonDown(UINT nFlags, const CPoint& point); // 생성하고 ElementMgr에 추가
        bool On!@#$%@!#$MouseMove(UINT nFlags, const CPoint& point); // 생성한 엘리먼트 크기 조절
        bool On_LButtonUp(UINT nFlags, const CPoint& point); // 생성된 엘리먼트 크기가 충분한지 검사하여 충분치 않으면 제거
private:
        CTestView* m_pView;
        ElementMgr* m_pElementMgr;
        TextBoxElement* m_pCreatedTextBox;
}