[김재진][API]Dialog에서 Slider Componet를 사용하기

Programming/MFC 2010. 7. 13. 18:23 Posted by 알 수 없는 사용자
float g_fPos1 = 1; // Slider 수치값을 저장할 변수

// Dialog Callback Function Create
BOOL CALLBACK  DlgMapInfo(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
    switch(iMessage)
    {
    case WM_INITDIALOG:
        // SendMessage(GetDlgItem(hDlg, IDC_SLIDER1) Slider를 사용한 Wnd 값을 가져온다.
        // TBM_SETRANGE는 SLIDER Range 설정
        // MAKELPARAM(최소값, 최대치) 값을 설정한다.
        SendMessage(GetDlgItem(hDlg, IDC_SLIDER1), TBM_SETRANGE, false, MAKELPARAM(1, 10));
        // 위치값 설정 TBM_SETPOS
        SendMessage(GetDlgItem(hDlg, IDC_SLIDER1), TBM_SETPOS, NULL, 0);
        // Edit Component에 출력
        SetDlgItemInt(hDlg, IDC_EDIT1, (int)g_fPos1, true);
        // Dialogbox를 새로 고침
        InvalidateRect(hDlg, NULL, true);
        return true;

    // Slider Scoll 변경 Event 처리
    case WM_HSCROLL:
        // 실행된 윈도우 Handle 값을 가져와서 Slider Component의 값을 읽어온다.
        if((HWND)lParam == GetDlgItem(hDlg, IDC_SLIDER1))
        {
            // Slider Component 의 값을 읽어와 g_fPos에 저장
            // TBM_GETPOS : Slider의 위치값을 읽어온다.
            g_fPos1 = (float)SendMessage(GetDlgItem(hDlg, IDC_SLIDER1), TBM_GETPOS, 0, 0);
            // Edit Component 에 값을 입력한다.
            SetDlgItemInt(hDlg, IDC_EDIT1, (INT)g_fPos1 , FALSE);
            InvalidateRect(hDlg, NULL, true);
        }

        return true;
    case WM_DESTROY:
        EndDialog(hDlg, IDCANCEL);
        return true;
    }
    return false;
}

※ 주의사항 : Resource에 Dialog를 생성하고 그 안에 Slider Component를 생성한 후에 적용 시켜야 함.

'Programming > MFC' 카테고리의 다른 글

[서동권] MFC 메뉴 삭제하는 방법  (0) 2010.06.06
[장영수]MFC-Cimage  (1) 2010.05.27