2

我已按照此链接获取 ActiveX 控件的窗口句柄

来自微软网站的示例代码

// The following code should return the actual parent window of the ActiveX control.
HWND CMyOleControl::GetActualParent()
{
   HWND hwndParent = 0;

   // Get the window associated with the in-place site object,
   // which is connected to this ActiveX control.
   if (m_pInPlaceSite != NULL)
       m_pInPlaceSite->GetWindow(&hwndParent);

   return hwndParent;     // Return the in-place site window handle.
}

但就我而言,我不断发现“m_pInPlaceSite”始终为 NULL。我正在尝试在我的控件 FinalConstruct 中运行此代码。我还需要为 m_pInPlaceSite 赋予一个值吗?还是我需要 Query 来获取值。

谢谢

4

1 回答 1

1

FinalConstruct太早了。在 FinalConstruct 中,您的类刚刚创建并且尚未初始化。没有“到位”的站点,根本没有站点。

您的控件将由其所有者调用,将为其提供站点,然后激活 - 只有这样您才有可能m_pInPlaceSite可用。

于 2012-12-04T23:26:14.667 回答