2012-01-30 4 views
0

안녕하세요! 진행률이 표시된 MFC 대화 상자가 있습니다. PostMessageW (WM_CLOSE)를 사용하여 100 %에 도달하면 대화 상자가 자동으로 닫힙니다. 문제는 진행 중에 대화 상자가 닫히지 않고 대화 상자를 움직이면 WM_CLOSE 메시지가 무시됩니다. 어떤 제안? 감사.MFC 대화 닫기 문제

+0

이 모델 대화 상자입니까? – ChrisBD

+0

예, 모달 대화 상자입니다. – rapt0r

+0

마우스를 사용하여 대화 상자를 오랫동안 계속 움직이고 진행이 끝나면 마우스를 놓을 때까지 대화 상자가 닫히지 않는다는 것을 의미합니까? –

답변

0

모달 대화 상자의 경우 실제로는 WM_CLOSE 메시지를 사용할 필요가 없습니다.

일반적으로 OK 또는 Cancel 단추 이벤트를 사용하여 기능 코드에서 EndDialog 메서드를 호출하거나 처리가 완료되면 반환합니다 (대화 상자가 초기화되는 즉시 프로세스가 실행된다고 가정). 반환 값을 동시에 설정할 수 있습니다. 예 : EndDialog(2);.

어느 쪽이든 현재 메시지 처리기가 반환되면 대화 상자가 닫히기 때문에 지연 시간이 길어질 수 있지만 그다지 많으면 안됩니다.

+0

트랩을 실행 한 후 WM_KICKIDLE 핸들러에서 EndDialog를 호출 할 수 없습니다. 이제 WM_CLOSE를 사용하여 모달 대화 상자를 닫습니다. – Lothar

0

진행률 표시 줄 뒤에있는 활동이 별도의 스레드에서 수행됩니까? 대화 상자를 해제 할 때까지 진행률 표시 줄이 멈출 수있는 대화 상자를 끌 때 그렇지 않은 것처럼 보입니다. 즉, 스레드 간 통신, 메시지가 대화 HWND에 게시되는 방법을 조사해야 할 수도 있습니다.

정상적인 Windows 동작 인 것처럼 보이는 대화 상자를 드래그하는 동안 대화 상자가 정지 상태 (활동 없음) 상태 일 수 있습니다. 이 경우 신호/CEvent를 사용하여 대화 상자가 닫히도록 할 수 있습니다.