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;
}
bool On_LButtonDown() <- 같은 함수명이 주석이랑 일치하지 않지만, 그건 그렇다 치고
TextBoxElementCreateController <- 이 Controller 명도 하는 짓은 팩토리면서, 명칭은 Controller라는게 햇갈리지만, 이 것도 그렇다 치고
TextBoxElementCreateController 얘가 가진 맴버변수가 왜 필요한지 모르겠다, Element를 실제로 생성하는 부분도 긁어줘봐
그리고 원하는게 TextBoxElement 일 때만 m_pView을 채워주는 것 같은데, 이게 왜 고민꺼리인지도 모르겠다
virtual bool Element::Init() 같은거 만들면 되자나?
Element 자체는 CTestView랑은 연관짓지 않으려고...