Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1.2 KiB

#include "stdinc.h"
#include "cuimgr.h"
#include "SxApwCreate.h"
static ATL::CComModule Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(__uuidof(CSxApwUiManager), CSxApwUiManager)
END_OBJECT_MAP()
ATL::CComModule* GetModule() { return &Module; }
ATL::_ATL_OBJMAP_ENTRY* GetObjectMap() { return ObjectMap; }
const CLSID* GetTypeLibraryId() { return NULL; }
HRESULT STDMETHODCALLTYPE
CSxApwUiManager::CreateView(
PCWSTR type, /* progid, clsid, dllpath, whatever.. */
HWND hWnd
)
{
HRESULT hr;
CLSID clsid;
ATL::CComPtr<ISxApwUiView> view;
if (FAILED(hr = CLSIDFromString(const_cast<PWSTR>(type), &clsid)))
goto Exit;
if (FAILED(hr = SxApwCreateObject(clsid, view)))
goto Exit;
if (FAILED(hr = view->SetParentWindow(hWnd)))
goto Exit;
m_views.push_back(view);
Exit:
return hr;
}
HRESULT STDMETHODCALLTYPE
CSxApwUiManager::NextRow(
int nColumns,
const PCWSTR* columns
)
{
/*
just multiplex/broadcast the data across all the views..
*/
for (Views_t::const_iterator i = m_views.begin(); i != m_views.end() ; ++i)
{
static_cast<const ATL::CComPtr<ISxApwUiView>&>(*i)->NextRow(nColumns, columns);
}
return S_OK;
}