none
[MFC] USB를 제거했을 때 USB가 다시 연결되기까지 대기하는 프로그램은 어떤식으로 구현해야 할까요? RRS feed

  • 질문

  • 안녕하세요. MFC 초보자 입니다. 개발환경은 vs2015 community입니다.

    웹캠 usb연결 여부 확인 프로그램을 만들어보려고 합니다.

    프로그램은 위의 구성으로 되어있습니다. 1개의 picture control과 IDCANCEL버튼 1개입니다.

    picture control에는 웹캠영상이 보이고 종료버튼은 프로그램을 종료합니다.

    제가 구현하고 싶은 기능은 3가지 입니다.

    1. 프로그램 실행 도중 웹캠을 제거하면 웹캠 미연결 알림창이 뜨는데 웹캠을 다시 연결하기 전까지는 미연결 알림창이 사라지지 않게 하고싶습니다.

    2. 미연결 알림창이 떠있는 동안 웹캠을 다시 연결하면 알림창이 사라지고 '연결되는 중'이라는 연결 알림창이 뜨며 웹캠 연결을 마친 뒤 연결 알림창이 종료되도록 하고 싶습니다.

    3. 미연결 알림창이 떠있어도 종료버튼을 누르면 프로그램이 종료되도록 하고 싶습니다.

    messagebox를 사용해보았지만 ok버튼을 누르기전까지는 다음 단계로 넘어가지 않았고 제가 생각했던 방식이랑 다르게 수행되었습니다.

    아래는 간략화한 제 소스코드입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
        // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
        if (message == WM_DEVICECHANGE) {
            // 카메라가 제거된 경우
            if (wParam == DBT_DEVICEREMOVECOMPLETE) {
                // 웹캠 타이머 종료
                // 미연결 알림창 출력
                // 웹캠이 다시 연결될 때까지 대기
            }
            // 카메라가 연결된 경우
            else if (wParam == DBT_DEVICEARRIVAL) {
                // 미연결 알림창 제거
                // 연결 알림창 출력
                // 웹캠 연결 수행
                // 웹캠 타이머 재시작
            }
        }
        return CDialogEx::DefWindowProc(message, wParam, lParam);
    }
    cs


    웹캠 타이머 종료와 웹캠 연결 수행/웹캠 타이머 재시작 기능은 작성하였으나 알림창 출력과 제거, 대기가 미완성입니다.

    모달리스 다이얼로그를 사용해서 알림창을 만드는 것을 생각해봤으나 더 나은 방법이 있을 것 같아 질문드립니다.

    좋은 방법이 있을까요?

    2017년 6월 28일 수요일 오전 9:04