/** * @file XTPFramework.cpp * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ #include "StdAfx.h" #include "Common/XTPFramework.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif IMPLEMENT_DYNAMIC(CXTPCmdTarget, CCmdTarget); // { 1965CF4C-7BE1-4E09-94B4-DCEF78B16D04 } const IID IID_IXTPCmdTargetProvider = { 0x1965cf4c, 0x7be1, 0x4e09, { 0x94, 0xb4, 0xdc, 0xef, 0x78, 0xb1, 0x6d, 0x4 } }; CCmdTarget* AFX_CDECL CXTPCmdTarget::FromIDispatchSafe(IDispatch* pDisp) { if (NULL == pDisp) { return NULL; } // Try to obtain CCmdTarget pointer from IXTPCmdTargetProvider. IXTPCmdTargetProvider* pCmdTargetProvider = NULL; if (SUCCEEDED(pDisp->QueryInterface(&pCmdTargetProvider)) && NULL != pCmdTargetProvider) { CCmdTarget* pCmdTarget = pCmdTargetProvider->GetCmdTarget(); pCmdTargetProvider->Release(); return pCmdTarget; } // Try MFC way. IDispatch* pObjectRoot = NULL; if (SUCCEEDED(pDisp->QueryInterface(&pObjectRoot)) && NULL != pObjectRoot) { CCmdTarget* pCmdTarget = CCmdTarget::FromIDispatch(pObjectRoot); pObjectRoot->Release(); return pCmdTarget; } return NULL; } CXTPCmdTarget::CXTPCmdTarget() { } BEGIN_INTERFACE_MAP(CXTPCmdTarget, CCmdTarget) XTP_DECLARE_CMDTARGETPROVIDER_INTERFACE_PART(CXTPCmdTarget) END_INTERFACE_MAP() XTP_IMPLEMENT_CMDTARGETPROVIDER_INTERFACE(CXTPCmdTarget)