描述:
class CSyCtrl : public COleControl
在CSyCtrl的函数里面取这个控件的窗口句柄。
我用下面的语句也无法取得句柄不知道怎么回事
HWND hWnd = GetSafeHwnd();
解决方案1:
自定义类中创建Public函数接收窗口句柄,如SetHwnd(Hwnd h)
Ctrl类中调用自定义类中的SetHwnd函数
//如果是取容器接口指针
LPOLECONTAINER lpContainer;
HRESULT hr = m_pClientSite->GetContainer(&lpContainer);
//如果是取窗口句柄
HWND m_hWndParent;
IOleInPlaceSite *pOleInPlaceSite = NULL;
if (NOERROR==m_pClientSite->QueryInterface(IID_IOleInPlaceSite, (LPVOID *)&pOleInPlaceSite))
{
pOleInPlaceSite->GetWindow((HWND *)&m_hWndParent);
pOleInPlaceSite->Release();
}
QueryInterface to retrieve IOleWindow pointer, if you succeeded, call IOleWindow::GetWindow