im пытается создать новое окно, используя следующий класс. однако у меня возникают серьезные проблемы при попытке получить имя нового сгенерированного окна, используя переменную CWindow :: m_hwnd. я предполагаю, что я должен передать переменную функции CWindowImpl :: Create(), которая содержит HWND моего родителя, но я не знаю, как ее получить.Как создать новое окно с использованием класса CWindowImpl
STDMETHODIMP CVMNExporter::SetSite(IUnknown *pUnkSite) {
HRESULT hr;
if(FAILED(hr = ATL::IObjectWithSiteImpl<CVMNExporter>::SetSite(pUnkSite)))
return hr;
// We are rnning from a web browser
CONNECTION_CALLBACK = JSCRIPT_DISPID;
EXPORTING_CALLBACK = JSCRIPT_DISPID;
MERGING_CALLBACK = JSCRIPT_DISPID;
ABORTING_CALLBACK = JSCRIPT_DISPID;
AddRef();
if(NULL == Create(0)) {// Creates the hidden window
Release();
return HRESULT_FROM_WIN32(GetLastError());
}
ATLTRACE("TEST - SetSite(): this: %d, window: %d", this, m_hWnd);
m_dwApartmentMode = HWND_APARTMENT;
SendMessage(WM_EXPORTER_APARTMENT_SETUP, 0, 0);
return S_OK; }
CVMNExporter реализует следующие интерфейсы:
public ATL::IObjectSafetyImpl<CVMNExporter, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>,
public ATL::IObjectWithSiteImpl<CVMNExporter>,
public ATL::CWindowImpl<CVMNExporter, ATL::CWindow, ATL::CFrameWinTraits>,
спасибо!
'CWindowImpl :: Create' создает вам окно, и вы будете иметь свой' HWND' доступна с там. Если вы хотите предоставить дескриптор родительского окна, вам нужно сначала получить его с вашего сайта. Вам нужно будет запросить его с помощью 'IOleWindow :: GetWindow' или аналогичного метода. –