MFC에서 슬라이더 컨트롤을 더블클릭하면
조금은 심하게 생뚱맞은 핸들러가 생성되는데 문제는.. 값이 변하는데 나오는 값이 아닌
슬라이더를 그리는데 필요한 핸들러가 호출되도록 연결된다.. -_-
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CtestDlg::OnNMCustomdrawSlider1) |
void CtestDlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult) { // optical zoom slider LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. *pResult = 0; } |
아무튼.. 여기다가 억지로 코드를 구겨 넣어서 값을 넣어두니..
실행하면 창이 뜨기도 전에 에러가 발생하는 사태가 발생..
클래스 위저드에서 "메시지 - WM_HSCROLL" 을 택해서 추가한 후
원하는 슬라이더 컨트롤의 스크롤바인지 확인하고 처리를 해주어야 한다.
void CtestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); } |
[링크 : http://system.tistory.com/entry/MFC슬라이더-컨트롤-사용법]
void CMyDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { CSliderCtrl *ACSliderCtrl = (CSliderCtrl *)pScrollBar; int nID = ACSliderCtrl->GetDlgCtrlID(); int NewPos = ((CSliderCtrl *)pScrollBar)->GetPos(); CWnd *ACWnd = GetDlgItem(nID); switch (nID) { default: break; case IDC_SLIDER1: m_edit1.Format( "%d", NewPos ); UpdateData(FALSE); break; } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } |
[링크 : https://stackoverflow.com/questions/7269834/event-when-a-particular-slider-is-changed]
[링크 : https://msdn.microsoft.com/ko-kr/library/xzkasz2y(v=vs.100).aspx]
'Programming > C Win32 MFC' 카테고리의 다른 글
한글 코드 페이지 (0) | 2017.10.23 |
---|---|
CSliderCtrl OnHScroll() 주의사항 (0) | 2017.10.20 |
MFC CMenu (0) | 2017.10.16 |
MFC 다이얼로그 창 크기 변경 못하도록 하기 (2) | 2017.10.11 |
MFC 버튼에 아이콘 표시 관련 (0) | 2017.10.11 |