Visual C++ 6.0 프로그램 (원래는 Windows NT 컴퓨터에서 작성)을 Visual C++ 2010으로 마이그레이션하려고합니다. 내 64 비트 Windows 7 PC에서 사용하십시오. 이 프로그램은 잘 컴파일하지만, 디버거에서 다음과 같은 출력을 yeilds 런타임 어설 션 오류가 : OLE 컨트롤 {F9043C85-F6F2-101A-A3C9-08002B2F49FB} 실패의Visual C++ 6.0에서 Visual C++ 2010 (64 비트 컴퓨터)으로 공용 컨트롤을 사용하여 프로그램을 마이그레이션하는 방법
CoCreateInstance를가.
결과 코드 : 0x80040154
컨트롤이 제대로 등록되어 있습니까?
경고 : 리소스 항목과 Win32 Z 순서 목록은 동기화되지 않습니다. Tab 주문이 잘 정의되지 않았을 수 있습니다.
경고 : 대화 상자 초기화 중에 CreateDlgControls가 실패했습니다.
실패한 주장은 occcont.cpp의 라인 925에 :
ASSERT(IsWindow(pTemp->m_hWnd));
내가 Microsoft 공용 대화 상자 컨트롤의 버전 6.0이 등록되지 않을 수 있음을 http://dynamicsuser.net/forums/p/25968/140697.aspx에서 이해합니다. Regsrv32.exe를 사용하여 등록하고 Windows를 다시 시작했지만 오류가 계속 발생합니다.
내 목표는이 오래된 프로그램이 새로운 도구로 작동 할 수 있는지 여부를 알려주는 것입니다. 실제로는 오래된 프로그램을 다시 작성하지는 않습니다. 이전 프로그램을 최신 컴퓨터에서 실행할 수 있습니까?
EDIT : 어설 실패
BOOL CCameraSimulationApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
if (!InitCommonControlsEx(&InitCtrlEx))
{
printf("Common Controls failed to initialize");//debug
}
CCameraSimulationDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
를 발생시키는 코드 추가 ...
나로부터 downvote 아니지만 어설 션 실패의 원인이되는 코드를 찾아 붙여 넣을 수 있다면 좋을 것입니다. 그렇지 않으면 대답하기가 너무 어렵습니다. 또한, 당신이 전화 : http://msdn.microsoft.com/en-us/library/windows/desktop/bb775697(v=vs.85).aspx? – SirDarius
@SirDarius'CDialog :: DoModal()'은 어설 션을 발생시킵니다. 귀하의 제안을 시도하고 함수가 true를 반환하면 실제로 ActiveX 컨트롤이 아니라 내 자신의 코드로 문제가 발생한다고 생각하게됩니다. –
음 ... 그냥 옆으로 : 이것은 ActiveX와는 아무런 관련이 없습니다. 조금도. – specializt