C & C++/MFC 컨트롤
[Tip] 네이트온 올림글 따라하기
izen8
2011. 4. 4. 13:33
네이트온에 보면 저런 기능이 있다.
아티클들이 시간이 되면 스르륵 올라가서 다음 아티클이 나온다.
그 기능을 구현해보자.
- void CNateDlg::DrawUpping( CDC* pDC )
- {
- CDC memDC;
- CBitmap bitmap;
- CRect rect;
- memDC.CreateCompatibleDC( pDC );
- bitmap.CreateCompatibleBitmap( pDC,
- m_clsRect.Width() - m_clsScroll.Width(),
- m_clsRect.Height() * 2
- );
- memDC.SelectObject( &bitmap);
- memDC.PatBlt( 0,
- 0,
- m_clsRect.Width() - m_clsScroll.Width(),
- m_clsRect.Height() * 2,
- WHITENESS
- );
- rect = m_clsRect;
- // 위치를 변화 시킨다
- m_nPos -= UP_INCREMENT;
- m_clsRect.top = 0 + m_nPos;
- m_nText -= UP_INCREMENT;
- rect.top = m_clsOriginal.Height() + m_nText;
- memDC.DrawText(g_strOther[m_nArticle], m_clsRect, NULL );
- memDC.DrawText(g_strOther[m_nNextArticle], rect, NULL);
- // 화면에 복사해준다
- pDC->BitBlt( 0,
- 0,
- m_clsRect.Width() - m_clsScroll.Width(),
- m_clsRect.Height() * 2,
- &memDC,
- 0,
- 0,
- SRCCOPY
- );
- bitmap.DeleteObject();
- ReleaseDC( &memDC );
- if ( m_clsRect.top == (m_clsOriginal.Height() * -1) )
- {
- m_clsRect = m_clsOriginal;
- // 다음 글을 결정한다. m_nAricle과 m_nNextArticle
- CalcNextArticle();
- m_nPos = 0;
- m_nText = 0;
- m_bComplete = TRUE;
- }
- }