Re: How to get handle for a windowless activex control.
What do you need it for?
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://vcfaq.mvps.org
=====================================
"JoDeGr8" <johnemmatty@gmail.com> wrote in message
news:1186145964.731233.142290@x35g2000prf.googlegroups.com...
Hi,
Is there any way to get the handle for the windowless activex control.
This following code will fail in the case of windowless control.
LPOLEWINDOW lpOleWnd;
HWND docWnd = NULL;
HRESULT hRes;
// If the control exists with an hWnd, this call will use its
// IOleInPlaceSite pointer to retrieve the container's IOleWindow.
// From there, IOleWindow can be queried to retrieve the
container's
// hWnd.
if (m_pInPlaceSite == NULL)
{
if (m_pClientSite != NULL)
{
if (FAILED(m_pClientSite->QueryInterface(IID_IOleInPlaceSite,
reinterpret_cast<void**>(&m_pInPlaceSite))))
{
m_pInPlaceSite = NULL;
}
}
else
m_pInPlaceSite = NULL;
}
if (m_pInPlaceSite) // Should always be ok
{
m_pInPlaceSite->GetWindow(&docWnd);
hRes = m_pInPlaceSite->QueryInterface(IID_IOleWindow,
(LPVOID *) &lpOleWnd);
if (SUCCEEDED(hRes))
{
hRes = lpOleWnd->GetWindow(&docWnd);
if (SUCCEEDED(hRes))
{
lpOleWnd->Release();
}
}
}
Regards,
John.