Programming/MFC
Example 13 : Controls
부풍
2009. 8. 27. 15:33
Resource Editor
- IDC_SPIN
- Auto Buddy : 탭 순서가 바로 이전인 Edit Control과 연결됨.
- Set Buddy Integer : Edit Control의 캡션이 자동 변경됨
- DDX : CSpinButtonCtrl m_ctrlSpin
- IDC_EDIT
- DDX : int m_nAmount
- IDC_SLIDER
- DDX : CSliderCtrl m_sliderCtrl
- IDC_PROGRESS
- DDX : CProgressCtrl m_ctrlProgress
- IDC_ANIMATION
- DDX : CAnimateCtrl m_ctrlAnimation
CEx13View.h
int m_nAmount; CSpinButtonCtrl m_ctrlSpin; CSliderCtrl m_ctrlSlider; CProgressCtrl m_ctrlProgress; CAnimateCtrl m_ctrlAnimation;
CEx13View.cpp (생성코드)
void CEx13View::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT, m_nAmount); DDX_Control(pDX, IDC_SPIN, m_ctrlSpin); DDV_MinMaxInt(pDX, m_nAmount, 0, 100); } void CEx13View::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); m_ctrlSpin.SetRange(0, 100); m_ctrlSlider.SetRange(0, 100); }
WM_HSCROLL
void CEx13View::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. m_nAmount = m_ctrlSlider.GetPos(); UpdateData(FALSE); CFormView::OnHScroll(nSBCode, nPos, pScrollBar); }
Progress Bar
void CEx13View::OnBnClickedStart() { m_ctrlProgress.SetRange(0, 100); m_ctrlProgress.SetPos(0); m_ctrlProgress.SetStep(1); for(int i = 0; i < 100; i++) { m_ctrlProgress.StepIt(); Sleep(50); } AfxMessageBox("테스트가 성공적입니다."); } // 혹은 void CEx13View::OnBnClickedStart() { m_ctrlProgress.SetRange(0, 100); for(int i = 0; i < 100; i++) { m_ctrlProgress.SetPos(i); Sleep(50); } AfxMessageBox("테스트가 성공적입니다."); }
Animation
- Media:clock.avi - Sample AVI file
#define AVI_FILE "C:\\clock.avi" void CEx13View::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); m_ctrlSpin.SetRange(0, 100); m_ctrlSlider.SetRange(0, 100); m_ctrlAnimation.Open(AVI_FILE); } void CEx13View::OnBnClickedPlay() { m_ctrlAnimation.Play(0, -1, -1); } void CEx13View::OnBnClickedStop() { m_ctrlAnimation.Stop(); }