29 void* blk =
Mem->Alloc(size);
64 Guid.Data1 += (long)offset;
82 delete[]
const_cast<LPTSTR
>(
Text);
88TClassId::operator LPCTSTR()
92 wsprintf(
const_cast<LPTSTR
>(
Text),
93 _T(
"{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"),
106 TClassId(guid), MaxAlloc(maxAlloc), Offset(0)
115 TClassId(idtxt), MaxAlloc(maxAlloc), Offset(0)
124 TClassId(e), MaxAlloc(maxAlloc), Offset(0)
133 TClassId(), MaxAlloc(maxAlloc), Offset(0)
135 LPCTSTR str = regInfo[
"clsid"];
159 if(Offset >= MaxAlloc)
170 unsigned long offset = guid.Data1 -
Guid.Data1;
171 if ( offset >= (
unsigned long)Offset &&
172 ((
long*)&guid)[1] == ((
long*)&
Guid)[1] &&
173 ((
long*)&guid)[2] == ((
long*)&
Guid)[2] &&
174 ((
long*)&guid)[3] == ((
long*)&
Guid)[3] )
190CmpGuid12(IUnknown* obj, REFIID req, REFIID ref,
void ** pif)
192 if ( ((
long *)&req)[1] == ((
long *)&ref)[1] &&
193 ((
long *)&req)[2] == ((
long *)&ref)[2] &&
194 ((
long *)&req)[3] == ((
long *)&ref)[3] ) {
206 if ( ((
long*)&req)[1] == 0x00000000L &&
207 ((
long*)&req)[2] == 0x000000C0L &&
208 ((
long*)&req)[3] == 0x46000000L ) {
223 TUnknownBag* UnknownBag;
234 UnknownBag =
new TUnknownBag;
235 UnknownBag->Add(
this);
246 return I.Inner->Aggregate(inner);
247 ((IUnknown&)inner).AddRef();
258 UnknownBag->DetachItem(
this);
259 if (UnknownBag->GetItemsInContainer()==0) {
264 TRACEX(OcfRefCount, 1,
"~TUnknown() @" << (
void*)
this
266 <<
", RefCnt:" << I.RefCnt);
267 WARNX(OcfRefCount, I.RefCnt != 0, 0,
"~TUnknown() @ "
270 <<
", RefCnt:" << I.RefCnt);
281 return ResultFromScode(E_NOINTERFACE);
288TUnknown::TUnknownI::QueryInterface(
const GUID &
iid,
void * * pif)
291 if (
iid.Data1 == 0) {
301 return ResultFromScode(E_NOINTERFACE);
308TUnknown::TUnknownI::AddRef()
311 "AddRef on " <<
_OBJ_FULLTYPENAME(&Host()) <<
' ' << (
void*)&Host() <<
" to " << (RefCnt+1));
319TUnknown::TUnknownI::Release()
322 "Release on " <<
_OBJ_FULLTYPENAME(&Host()) <<
' ' << (
void*)&Host() <<
" to " << (RefCnt-1));
326 Inner->ThisUnknown().Release();
342 return Outer->Release();
348TUnknown::TUnknownI::~TUnknownI()
353 ::CoDisconnectObject(
this,0);
360static int logPixX = 0;
361static int logPixY = 0;
366GetScreenMetrics(
int& logPixX,
int& logPixY)
368 HDC hDCScreen = GetDC(0);
369 logPixX = GetDeviceCaps(hDCScreen, LOGPIXELSX);
370 logPixY = GetDeviceCaps(hDCScreen, LOGPIXELSY);
371 ReleaseDC(0, hDCScreen);
380 if (!logPixX || !logPixY)
381 GetScreenMetrics(logPixX, logPixY);
393 if (!logPixX || !logPixY)
394 GetScreenMetrics(logPixX, logPixY);
#define WARNX(group, condition, level, message)
#define PRECONDITION(condition)
#define TRACEX(group, level, message)
int GetOffset(const GUID &guid)
TClassId operator[](int offset)
TBaseClassId(owl::TRegList ®Info, int maxAlloc=256)
GUID/IID/CLSID management.
TClassId(const GUID &guid)
TClassId()
Default constructor - Derived class must set GUID.
void * Alloc(unsigned long size)
unsigned long GetRefCount()
virtual HRESULT QueryObject(const GUID &iid, void **pif)
QueryObject used when TUnknown is in constructor/destructor.
IUnknown & Aggregate(TUnknown &inner)
Array of pointers of simple types.
A registration parameter table, composed of a list of TRegItems.
#define _OBJ_FULLTYPENAME(obj)
Include for OC, gets common headers when precompiled headers are enabled.
Reliable platform independent header for common memory and string functions.
Object Component Framework (COM encapsulation).
void OcHiMetricToPixel(const SIZEL &sizeHM, SIZEL &sizePix)
void CmpGuidOle(IUnknown *This, REFIID req, void **pif)
void CmpGuid12(IUnknown *This, REFIID req, REFIID ref, void **pif)
void OcPixelToHiMetric(const SIZEL &sizePix, SIZEL &sizeHM)
DIAG_DEFINE_GROUP_INIT(OWL_INI, OwlApp, 1, 0)
ObjectComponents BOcOle engine linking & embedding interfaces.
#define MAP_LOGHIM_TO_PIX(hiMetric, pixelsPerInch)
#define MAP_PIX_TO_LOGHIM(pixel, pixelsPerInch)
ObjectComponents fundamental definitions.
#define HR_CLASS_CLASSNOTAVAILABLE
#define OLECALL(func, msg)
Low level OLE Utility class definitions.
Definition of class TString, a flexible universal string envelope class.