2014-11-06 2 views
1

내 VB6 응용 프로그램에 모달 폼이 표시되는지 확인하는 방법이 있습니까?표시하는 모달 폼이 있는지 확인합니다.

모달 양식 표시가없는 경우 모달 양식 표시 및 모덜리스가있는 경우 모달로 다른 양식을 표시하려고합니다.

나는 오류가 발생하면 내가이를 감지하는 몇 가지 오류 처리를하고 모달로 표시 할 수 있습니다 알고

Public Sub ShowFormModeless(frm As Form, Optional ownerForm As Form = Nothing) 
    On Error GoTo ShowModal 
    Call frm.Show(, ownerForm) 
    Exit Sub 
ShowModal: 
    Call frm.Show(vbModal, ownerForm) 
End Sub 

하지만 오류가 발생하지 않고이를 감지 할 수 있어야합니다.

+0

이것은 재미있는 읽을 거리를 만들어 주지만 그것은 가능하지 않음을 시사합니다. http://www.vbforums.com/showthread.php?723669- Detect-modal-form – Fred

답변

1

App.NonModalAllowed을 확인해보십시오. 이 속성은 다른 (현재 모듈보다) 프로젝트에서 표시되는 모달 폼을 감지하지 않습니다. 즉, 응용 프로그램이 기본 실행 파일과 여러 ActiveX dll로 구성된 경우 이러한 프로젝트 각각에 별도의 App 개체와 Forms 컬렉션이 있습니다.

결과적으로 dll이 모달 양식을 표시하는 경우 자체 프로젝트의 App.NonModalAllowed 만 플래그됩니다. 따라서 다시 한 번, App.NonModalAllowed은 프로세스 전체 플래그가 아니라 프로젝트 별 플래그입니다.

이 플래그는 VB6 전용 양식을 추적하므로 API 대화 상자 (파일 열기/저장, 색상 선택기 등)를 사용할 경우 VB6 런타임의 모달 루프에 입력되지 않으므로 아무 것도 표시되지 않습니다.

응용 프로그램이 단일 exe 인 경우이 플래그를 사용하면 예상대로 작동합니다.

+0

감사합니다.이 방법은 올바른 값을 반환하지 않는 것 같습니다. 비록 세 가지 형태의 테스트 프로젝트에서도 그렇습니다. –

관련 문제