|
|
//-----------------------------------------------------------------------------
//
// File: binary.h
// Copyright (C) 1994-1997 Microsoft Corporation
// All rights reserved.
//
//
//
//-----------------------------------------------------------------------------
#ifndef ESPUTIL_BINARY_H
#define ESPUTIL_BINARY_H
//
// Base class for binary classes. This allows serialization
// of arbitrary data.
//
class CLocVariant; class CLocItem;
#pragma warning(disable: 4275) // non dll-interface class 'foo' used
// as base for dll-interface class 'bar'
class LTAPIENTRY CLocBinary : public CObject { public: CLocBinary();
virtual void AssertValid(void) const;
//
// Serialization routines. Supports serialization withour dynamic creation
//
virtual void Serialize(CArchive &archive); //Afx serialize function
//
// Result code for comparing one binary class from another.
//
enum CompareCode { noChange, partialChange, //Only non-localizable data changed
fullChange //Localizable data changed
}; virtual CompareCode Compare (const CLocBinary *) = 0;
// Called to update the non-localizable data - Used when compare returns
// partialChange
virtual void PartialUpdate(const CLocBinary * binSource) = 0;
enum Alignment { a_Default, a_Left, a_Center, a_Right, a_Top, a_VCenter, a_Bottom };
//
// The universe of possible binary properties that may be queried for.
// This order must NOT change, or you may break old parsers! Put new
// properties at the end.
//
enum Property { //
// Native formats..
//
p_dwXPosition, p_dwYPosition, p_dwXDimension, p_dwYDimension, p_dwAlignment, p_blbNativeImage,
p_dwFontSize, p_pasFontName, p_dwFontWeight, p_dwFontStyle,
//
// Interchange formats..
//
p_dwWin32XPosition, p_dwWin32YPosition, p_dwWin32XDimension, p_dwWin32YDimension, p_dwWin32Alignment, // Use Alignment enum
p_dwWin32ExtAlignment, // Extended - Use Alignment enum
p_blbWin32Bitmap, p_blbWin32DialogInit, //
// Generic - usable both for Native and Interchange
//
p_bVisible, // Is the item visable?
p_bDisabled, // Is the item disabled?
p_bLTRReadingOrder, // Is the reading order L to R?
p_bLeftScrollBar, // Scroll bar on left?
//
// "Styles" tab for dialog controls.
//
p_bLeftText, // Display text to left of control?
p_bWin32LTRLayout, // WS_EX_LAYOUT_RTL
p_bWin32NoInheritLayout, // WS_EX_NOINHERIT_LAYOUT
p_dwWin32VAlignment, // Use Alignment enum
// Insert new entries here
};
virtual BOOL GetProp(const Property, CLocVariant &) const; virtual BOOL SetProp(const Property, const CLocVariant &); //
// Attempts to convert CBinary in CLocItem to same type as this
//
virtual BOOL Convert(CLocItem *); virtual BinaryId GetBinaryId(void) const = 0; virtual ~CLocBinary();
BOOL NOTHROW GetFBinaryDirty(void) const; BOOL NOTHROW GetFPartialUpdateBinary(void) const; void NOTHROW SetFBinaryDirty(BOOL); void NOTHROW SetFPartialUpdateBinary(BOOL);
protected: private: //
// Copy constructor and assignment are hidden, since we
// shouldn't be copying these things around.
//
CLocBinary(const CLocBinary &); const CLocBinary& operator=(const CLocBinary &); //
// These allow a user to determine what parts of the item have been
// changed.
//
struct Flags { BOOL m_fBinaryDirty :1; BOOL m_fPartialUpdateBinary :1; };
Flags m_Flags; };
#pragma warning(default: 4275)
#include "binary.inl"
#endif
|