vb6 응용 프로그램에서 imagelist를 사용하면 Windows 7.0 64 비트에서 충돌이 발생합니다.

StackOverflow https://stackoverflow.com/questions/1018942

문제

comctl32.ocx ( "Microsoft Windows Common Controls 5.0 (SP2)")의 ImageList 컨트롤을 사용하는 이전 VB6 응용 프로그램이있어 TreeViews 및 ListViews에 대한 아이콘을 제공합니다.

앱은 Windows 7.0 64 비트에서도 시작되지 않습니다. ImageList가있는 양식을로드하려고하는 순간, 충돌이 발생합니다 (실제로, 앱이 흔들리고 흔적없이 빠져 나옵니다).

양식에서 ImageList를 제거하면 문제가 해결됩니다.

어떤 아이디어?

도움이 되었습니까?

해결책

VB5와 함께 제공되는 comctl32.ocx의 모든 인스턴스를 VB6과 함께 제공 한 MSComctl.ocx로 대체 하여이 문제를 해결했습니다.

Microsoft KB 기사 190952 이 작업을 수행하는 지침이 있습니다. 그것은 글로벌 검색과 장소 운영 일뿐입니다.

다른 팁

Microsoft에 버그를보고하십시오. VB6 런타임은입니다 여전히 지원됩니다 64 비트 Windows 7. Comctl32.ocx는 Windows 7과 함께 설치되어 있지 않지만 명시 적으로 나열되었습니다 Windows 7에서 지원되는대로.

솔루션은 괜찮습니다. 그러나 comctl32.ocx는 어쨌든 Win64에서 잘 작동해야합니다 (Vista 또는 7).

약간의 조언 :

mscomctl.ocx를 사용하는 경우 ListView 또는 TreeView에 XP/Vista/7 스타일을 적용 할 수 없으며 앱이 외계인으로 보일 수 있습니다. Manifest는 mscomctl.ocx 컨트롤에 영향을 미치지 않습니다.

해결 방법은 mscomctl.ocx 컨트롤을 서브 클래스하는 것이며, 여전히 comctl32.dll 헤더를 포함하기 때문에 페인트를 어떻게 조작 할 수 있습니다.

(나는 댓글로 게시했지만 여전히 할 수는 없습니다)

DEP (Data Execution Protection) 문제를 해결할 수 있습니다. DEP를 비활성화하여 테스트하십시오.

bcdedit.exe /set {current} nx AlwaysOff

명령 줄에 위를 입력 한 후 재부팅하십시오. 바지를 내려 놓고 창문을 달리는 것과 동등한 일이므로 다시 켜야합니다.

편집 : 위의 명령은 Vista에서 작동합니다. Windows 7에서 시도하지 않았습니다.

덜 과감한 DEP 조정은 컴퓨터 성능 대화 상자 (시스템 속성의 고급 탭)로 이동하여 DEP 탭의 예외 목록에 앱을 추가하는 것입니다.

BTW, 이것이 ServerFault.com에 속하지 않는다고 확신합니까? :피

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top