나는 UserControl을 사용하는 Vb6로 작성된 프로젝트를 가지고 있는데, ocx가 등록되었을 때 프로젝트는 잘 실행되지만, 사이드 바이 사이드 매니페스트와 같은 프로젝트를 실행하면 잘 실행됩니다. 컨트롤을 정적으로로드 한 상태에서 (폼에 추가 된) 컨트롤을 사용할 수 있지만 새 컨트롤 (속성 또는 메서드)을 사용하여 폼에 동적 컨트롤을 추가하면이 오류가 발생합니다. " 받는 사람 해봐요 : 가 VB6에서 OCX 프로젝트를 1 작성 2 사용자 컨트롤을 추가 3이 방법의 예를 추가 : 개체가이 속성 또는이 오류는이 방법을 재현 할 수이상한 경우 SXS가있는 기존 vb6 응용 프로그램이 누락 된 경우 = "개체가이 속성 또는 메서드를 지원하지 않습니다."
방법 "을 지원하지 않습니다 컨트롤 4- exe 프로젝트 만들기 5- 컨트롤 추가 예 : UserControl1 6- 이벤트 콜에서 DoSomething 7- 동적으로로드
Dim y As Control
UserControl1.DoSomething '<-------- CASE(1) THIS IS ALLRIGHT!'
Set y = Controls.Add("Project1.UserControl1", "y")
y.DoSomething '<---- (CASE 2) THIS WILL FAIL USING SXS'
WinDbg에서 오류를 추적하여 IDispatch :: GetIDsOfNames로 돌아가서 두 번째 경우에 호출하면 실패합니다.
어떤 아이디어?!
편집 : 내 나쁜, 여기에 명단입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="client.exe" version="1.0.0.0" type="win32" processorArchitecture="x86"/>
<file name="Project1.ocx">
<comClass
clsid="{C8CF7991-A8F2-4360-9404-03C9A052C245}"
description="Project1.UserControl1"
tlbid="{47853CCC-7BE6-4377-9C82-38A0B7755F65}"
threadingModel="apartment"
miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst"
progid="Project1.UserControl1"/>
<typelib
tlbid="{47853CCC-7BE6-4377-9C82-38A0B7755F65}"
version="1.0"
helpdir=""
flags="control,hasdiskimage"/>
</file>
<comInterfaceExternalProxyStub
iid="{0E4F313E-7EF3-4FE6-9591-9F7D2D819AEE}"
name="UserControl1"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"/>
<comInterfaceExternalProxyStub
iid="{53307849-4F14-4A59-B0CA-DE4950CE499D}"
name="UserControl1"
proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"/>
</assembly>
글쎄, 매니페스트가 잘못되었습니다. 여기에서 볼 수 없습니다. –
이것은 실제로 "나란히"(여러 어셈블리를 의미 함)가 아니라 reg-free COM입니다. 귀하의 매니 페스트가 중요한 정보 (이 경우에는 ProgID)가 누락 된 것 같습니다. – Bob77
동의하지만 문제가 변경되지 않습니다. 여기에 매니페스트가 있습니다. 나는 ProgID가 괜찮을 것이라고 확신한다. – Mehran