Получение дескриптора окна ActiveX


Я следовал этой ссылке , чтобы получить дескриптор окна элемента управления ActiveX

Пример кода с сайта microsoft

// 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, чтобы получить значение? Или мне нужно запросить, чтобы получить значение.

Спасибо

1 2

1 ответ:

FinalConstruct еще слишком рано. В FinalConstruct ваш класс только создается и еще не инициализирован. Нет никакого сайта "на месте", нет еще сайта вообще.

Ваш контроль будет вызван его владельцем, ему будет предоставлен его сайт, затем активирован - только тогда вы, возможно, будете иметь m_pInPlaceSite доступным.