/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/ /* rtrdata.cpp Implementation for data objects in the MMC FILE HISTORY: */ #include "stdafx.h" #include "rtrdata.h" #include "extract.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif /////////////////////////////////////////////////////////////////////////////// // Sample code to show how to Create DataObjects // Minimal error checking for clarity // Clipboard formats unsigned int CRouterDataObject::m_cfComputerName = RegisterClipboardFormat(L"MMC_SNAPIN_MACHINE_NAME"); unsigned int CRouterDataObject::m_cfComputerAddedAsLocal = RegisterClipboardFormat(L"MMC_MPRSNAP_COMPUTERADDEDASLOCAL"); ///////////////////////////////////////////////////////////////////////////// // CRouterDataObject implementations DEBUG_DECLARE_INSTANCE_COUNTER(CRouterDataObject); HRESULT CRouterDataObject::GetMoreDataHere(LPFORMATETC lpFormatetc, LPSTGMEDIUM lpMedium) { HRESULT hr = DV_E_CLIPFORMAT; AFX_MANAGE_STATE(AfxGetStaticModuleState()); // Based on the CLIPFORMAT write data to the stream const CLIPFORMAT cf = lpFormatetc->cfFormat; if (cf == m_cfComputerName) { hr = CreateComputerName(lpMedium); } else if (cf == m_cfComputerAddedAsLocal) hr = CreateComputerAddedAsLocal(lpMedium); return hr; } HRESULT CRouterDataObject::QueryGetMoreData(LPFORMATETC lpFormatEtc) { HRESULT hr = E_INVALIDARG; // of these then return invalid. if ((lpFormatEtc->cfFormat == m_cfComputerName) || (lpFormatEtc->cfFormat == m_cfComputerAddedAsLocal)) hr = S_OK; return hr; } ///////////////////////////////////////////////////////////////////////////// // CRouterDataObject creation members void CRouterDataObject::SetComputerName(LPCTSTR pszComputerName) { m_stComputerName = pszComputerName; } HRESULT CRouterDataObject::CreateComputerName(LPSTGMEDIUM lpMedium) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); USES_CONVERSION; LPCWSTR pswz = T2CW((LPCTSTR) m_stComputerName); // Create the computer name object return Create(pswz, (StrLenW(pswz)+1) * sizeof(WCHAR), lpMedium); } void CRouterDataObject::SetComputerAddedAsLocal(BOOL fComputerAddedAsLocal) { m_fComputerAddedAsLocal = fComputerAddedAsLocal; } HRESULT CRouterDataObject::CreateComputerAddedAsLocal(LPSTGMEDIUM lpMedium) { return Create(&m_fComputerAddedAsLocal, sizeof(m_fComputerAddedAsLocal), lpMedium); }