2009年12月29日 星期二

CuDrawText - draws formatted text in the specified rectangle.

//  draws formatted text in the specified rectangle.

CuDrawText textTest;

...

CuRect rt;
GetClientRect(hWnd, &rt);
textTest.SetRect(&rt);

...

textTest.SetText(TEXT("Hi") );

...

CuPaintDC dc(hWnd);
textTest.OnDraw(dc);


// CuDrawText.h

class CuDrawText
{
    CuRect m_rt;
    wstring m_strText;
    UINT m_uFormat;

public:
    CuDrawText(void);
    ~CuDrawText(void);

    void SetRect(  int xLeft,  int yTop,  int xRight,  int yBottom);
    void SetRect( RECT *rt );
    void SetText(LPCTSTR lpszString);
    void SetFormat(UINT uFormat);

    int OnDraw(HDC hdc);
};




// CuDrawText.cpp


CuDrawText::CuDrawText(void)
:m_uFormat(DT_LEFT)
{
}

CuDrawText::~CuDrawText(void)
{
}

void CuDrawText::SetRect(  int xLeft,  int yTop,  int xRight,  int yBottom)
{
    m_rt.SetRect(xLeft, yTop, xRight, yBottom);
}

void CuDrawText::SetRect( RECT *rt )
{
    m_rt = *rt;
}

void CuDrawText::SetText(LPCTSTR lpszString)
{
    m_strText = lpszString;
}

void CuDrawText::SetFormat(UINT uFormat)
{
    m_uFormat = uFormat;
}

int CuDrawText::OnDraw(HDC hdc)
{
    return ::DrawText(hdc, m_strText.c_str(), m_strText.size(), &m_rt, m_uFormat);
}

1 則留言:

  1. 問我為什麼不直接繼承CuRect讓CuDrawText能支援較多的CuRect的功能,你說CuRect跟CuDrawText為什麼要是繼承關係. 兩種完全不同功能的東西, 一點虛擬的點都沒有, 何來繼承可言!

    回覆刪除