windows-nt/Source/XPSP1/NT/base/wmi/bmoflocparser/inc/esputil/binary.h
2020-09-26 16:20:57 +08:00

166 lines
3.5 KiB
C++

//-----------------------------------------------------------------------------
//
// 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