C++ Multiple Modal Dialog hang

조회수 807회

안녕하세요.

이래저래 찾아보다가 질문드립니다.

우선 상황은 다음과 같습니다. 프로세스 pc_A가 4개의 Dialog를 띄운 상태입니다.

Dlg_A, Dlg_B, Dlg_C, Dlg_D

각각의 다이얼로그는 CFileDialog를 사용한 '파일열기' 기능을 갖고 있으며, Dlg_A의 경우 SHBrowseForFolder 또한 사용합니다. 이 때, 각 CFileDilaog나 SHBrowseForFolder를 위한 BROWSEINFO등은 지역변수입니다.

이 때, Dlg_A, Dlg_B, Dlg_C, Dlg_D 순으로 CFildDialog(Dlg_A의 경우SHBrowseForFolder를 사용해도 동일합니다.)를 활성화 시킵니다. 이 경우 각 CFileDialog(SHBrowseForFolder)는 Modal로 출력됩니다.

이후 Dlg_D의 Modal-Dialog를 종료하지 않을 경우, Dlg_A,B,C는 Modal-Dialog를 종료해도 기존 Main Dialog(Dlg_A,B,C)의 메세지 처리가 진행되지않아, 겉으로 보기에는 Hang에 걸린 것처럼 보입니다.

이 때 Dlg_D의 Modal-Dialog를 종료할 경우 모든 다이얼로그는 정상동작합니다.

위와 같은 상황에서, Dlg_D(가장 나중에 실행된 Modal-Dialog의 Main-Dlg)의 Modal-Dialog를 종료하지 않은 상태에서도 다른 다이얼로그들의 동작이 정상적으로 이루어지게 하려면 어떻게 해야하나요?

pump message나 EndModalLoop등을 시도해보려 하였으나 전자의 경우 실력의 미숙, 후자의 경우 효과없음이었습니다.

답변에 미리 감사드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 가장 간단한 방법은 각 CFileDialog, SHBrowseForFolder등을 사용하는 부분을 Thread로 처리하는 것인데, 해당 방법을 제외한 다른 방법을 찾고 있습니다. 알 수 없는 사용자 2018.7.19 10:39

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)