2012-12-04 35 views
2

我跟了這link從微軟的網站獲得的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」是總是得到ActiveX控件的窗口句柄空值。我試圖在我的控件FinalConstruct中運行這段代碼。有什麼我需要爲m_pInPlaceSite實現一個值嗎?或者我需要查詢來獲得價值。

感謝

回答

1

FinalConstruct是爲時尚早。在FinalConstruct中,您的類正在創建中,尚未初始化。沒有「就地」的網站,根本沒有網站。

您的控件將被其所有者調用,它將被賦予其網站,然後激活 - 只有您可能有m_pInPlaceSite可用。

+0

你是對的。我如何知道該網站何時啓動? – hapyfishrmn

+0

嗯,我看到m_spClientSite設置不是m_spInPlaceSite。我會嘗試用這個來處理手柄 – hapyfishrmn