2009-04-03 9 views
0

콜백 함수를 사용하려고하는 매우 간단한 원 버튼 MFC 대화 상자 앱을 만들었습니다. 앱이 올바르게 실행되고 실행되지만 콜백 루틴이 실행되지 않습니다.콜백 루틴이 트리거되지 않음

콜백을 올바르게 트리거하려면 무엇을 수정해야합니까?

당신은 여기에 test.zip 파일을 다운로드 할 수 있습니다 (테스트 응용 프로그램은 그것을 밖으로 시도 할 수 있습니다 더 많은 사람들을 위해 VS 2003 년이다) : http://tinyurl.com/testfile-zip

코드는 CodeProject의에 알람 클래스를 이용하고, 콜백 함수는 3 초마다 (코드가 전달됨에 따라 결정됨) 트리거되도록되어 있습니다.

감사합니다.

+0

콜백 함수가 중단 점을 설정하고 함수에 메시지 상자를 넣음으로써 발생하는지는 이미 테스트했지만 함수에 전혀 도달하지 못했다는 것을 언급해야합니다. –

답변

1

난 당신의 코드를 검토 한 결과와 내가 버튼에서 호출 기능을 믿는다는 문제

void CTestDlg::OnBnClickedButton1() 
{ 
    CAlarmClock clock; 

    REPEAT_PARMS rp; 
    ZeroMemory(&rp, sizeof(REPEAT_PARMS)); 

    rp.bRepeatForever = TRUE; 
    rp.Type = Repeat_Interval; 
    rp.ss = 3; 

    clock.SetRepeatAlarm(0, 0, 0, rp, CallbackRtn); 
} 

이 함수의 스택에 알람 시계를 생성합니다. 따라서이 CAlarmclock 개체는 함수의 끝 부분에서 내용과 함께 삭제됩니다.

실제로 콜백을 수행하기에 충분히 오래있을 수 있으려면 대화 상자가 존재하는 한 콜백을 존재시키기위한 대화 상자 클래스의 멤버 변수로 추가해야합니다.

이 클래스를 올바르게 사용하는 방법은 CAlarmclock codeproject 페이지의 예제 코드를 참조하십시오.

+0

나는 OP 코드를 사용하여 클래스의 멤버로서 CALarmcloco 클럭을 테스트하고 곧바로 작동했다. – NotJarvis

+0

고마워요! 내가 간과 할 수없는 그런 간단한 일 ;-) 간혹 문제는 당신이 기본으로 돌아가는 것을 잊어 버린 다른 것과 관련이 있다는 것을 확신합니다! –

관련 문제