2009. 8. 24. 16:28
Programming/MFC
1. CFormView 계승
2. CEx9View::OnInitialUpdate
void CEx9View::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); CScrollBar *pRed, *pGreen, *pBlue; pRed = (CScrollBar*)GetDlgItem(IDC_RED); // DDX 사용하지 않고 얻기 pGreen = (CScrollBar*)GetDlgItem(IDC_GREEN); pBlue = (CScrollBar*)GetDlgItem(IDC_BLUE); pRed->SetScrollRange(0, 255); pGreen->SetScrollRange(0, 255); pBlue->SetScrollRange(0, 255); pRed->SetScrollPos(0); pGreen->SetScrollPos(0); pBlue->SetScrollPos(0); }
3. CEx9View::OnHScroll (WM_HSCROLL)
void CEx9View::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. switch(nSBCode) { case SB_LINELEFT : pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 1); break; case SB_LINERIGHT : pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 1); break; case SB_PAGELEFT : pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 10); break; case SB_PAGERIGHT : pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 10); break; case SB_THUMBTRACK : pScrollBar->SetScrollPos(nPos); break; default: break; } CFormView::OnHScroll(nSBCode, nPos, pScrollBar); Invalidate(); }
4. CEx9View::OnPaint - WM_PAINT
void CEx9View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 여기에 메시지 처리기 코드를 추가합니다. // 그리기 메시지에 대해서는 CFormView::OnPaint()을(를) 호출하지 마십시오. CScrollBar *pRed, *pGreen, *pBlue; int red, green, blue; pRed = (CScrollBar*)GetDlgItem(IDC_RED); pGreen = (CScrollBar*)GetDlgItem(IDC_GREEN); pBlue = (CScrollBar*)GetDlgItem(IDC_BLUE); red = pRed->GetScrollPos(); green = pGreen->GetScrollPos(); blue = pBlue->GetScrollPos(); CBrush myBrush, *oldBrush; myBrush.CreateSolidBrush(RGB(red, green, blue)); oldBrush = dc.SelectObject(&myBrush); dc.Rectangle(350, 50, 700, 300); dc.SelectObject(oldBrush); }