From 7f3bd46845100fe36737de5e8f51a9ded6d4aacd Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 14 Jul 2012 21:35:04 +0000 Subject: [PATCH] Add documentation for CURRENCY and SCODE wxVariant classes. This should have been part of r72081. See #14225. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- interface/wx/msw/ole/automtn.h | 175 ++++++++++++++++++++++++++++++++- interface/wx/variant.h | 4 + 2 files changed, 178 insertions(+), 1 deletion(-) diff --git a/interface/wx/msw/ole/automtn.h b/interface/wx/msw/ole/automtn.h index 916bc1b80d..e30c984754 100644 --- a/interface/wx/msw/ole/automtn.h +++ b/interface/wx/msw/ole/automtn.h @@ -42,6 +42,179 @@ enum wxAutomationInstanceFlags wxAutomationInstance_SilentIfNone = 2 }; +/** + @class wxVariantDataCurrency + + This class represents a thin wrapper for Microsoft Windows CURRENCY type. + + It is used for converting between wxVariant and OLE VARIANT + with type set to VT_CURRENCY. When wxVariant stores + wxVariantDataCurrency, it returns "currency" as its type. + + An example of setting and getting CURRENCY value to and from wxVariant: + @code + CURRENCY cy; + wxVariant variant; + + // set wxVariant to currency type + if ( SUCCEEDED(VarCyFromR8(123.45, &cy)) ) // set cy to 123.45 + { + variant.SetData(new wxVariantDataCurrency(cy)); + + // or instead of the line above you could write: + // wxVariantDataCurrency wxCy; + // wxCy.SetValue(cy); + // variant.SetData(wxCy.Clone()); + } + + // get CURRENCY value from wxVariant + if ( variant.GetType() == "currency" ) + { + wxVariantDataCurrency* + wxCy = wxDynamicCastVariantData(variant.GetData(), wxVariantDataCurrency); + cy = wxCy->GetValue(); + } + @endcode + + @onlyfor{wxmsw} + @since 2.9.5 + + @library{wxcore} + @category{data} + + @see wxAutomationObject, wxVariant, wxVariantData, wxVariantDataErrorCode + + @header{wx/msw/ole/oleutils.h} +*/ +class wxVariantDataCurrency : public wxVariantData +{ +public: + /** + Default constructor initializes the object to 0.0. + */ + wxVariantDataCurrency(); + + /** + Constructor from CURRENCY. + */ + wxVariantDataCurrency(CURRENCY value); + + /** + Returns the stored CURRENCY value. + */ + CURRENCY GetValue() const; + + /** + Sets the stored value to @a value. + */ + void SetValue(CURRENCY value); + + /** + Returns true if @a data is of wxVariantDataCurency type + and contains the same CURRENCY value. + */ + virtual bool Eq(wxVariantData& data) const; + + /** + Fills the provided string with the textual representation of this + object. + + The implementation of this method using @c VarBstrFromCy() Windows API + function with LOCALE_USER_DEFAULT. + */ + virtual bool Write(wxString& str) const; + + /** + Returns a copy of itself. + */ + wxVariantData* Clone() const; + + /** + Returns "currency". + */ + virtual wxString GetType() const; + + /** + Converts the value of this object to wxAny. + */ + virtual bool GetAsAny(wxAny* any) const; +}; + + +/** + @class wxVariantDataErrorCode + + This class represents a thin wrapper for Microsoft Windows SCODE type + (which is the same as HRESULT). + + It is used for converting between a wxVariant and OLE VARIANT with type set + to VT_ERROR. When wxVariant stores wxVariantDataErrorCode, it returns + "errorcode" as its type. This class can be used for returning error codes + of automation calls or exchanging values with other applications: e.g. + Microsoft Excel returns VARIANTs with VT_ERROR type for cell values with + errors (one of XlCVError constants, displayed as e.g. "#DIV/0!" or "#REF!" + there) etc. See wxVariantDataCurrency for an example of how to exchange + values between wxVariant and a native type not directly supported by it. + + @onlyfor{wxmsw} + @since 2.9.5 + + @library{wxcore} + @category{data} + + @see wxAutomationObject, wxVariant, wxVariantData, wxVariantDataCurrency + + @header{wx/msw/ole/oleutils.h} +*/ +class wxVariantDataErrorCode : public wxVariantData +{ +public: + /** + Constructor initializes the object to @a value or S_OK if no value was + passed. + */ + wxVariantDataErrorCode(SCODE value = S_OK); + + /** + Returns the stored SCODE value. + */ + SCODE GetValue() const; + + /** + Set the stored value to @a value. + */ + void SetValue(SCODE value); + + /** + Returns true if @a data is of wxVariantDataErrorCode type + and contains the same SCODE value. + */ + virtual bool Eq(wxVariantData& data) const; + + /** + Fills the provided string with the textual representation of this + object. + + The error code is just a number, so it's output as such. + */ + virtual bool Write(wxString& str) const; + + /** + Returns a copy of itself. + */ + wxVariantData* Clone() const; + + /** + Returns "errorcode". + */ + virtual wxString GetType() const { return wxS("errorcode"); } + + /** + Converts the value of this object to wxAny. + */ + virtual bool GetAsAny(wxAny* any) const; +}; + /** @class wxAutomationObject @@ -72,7 +245,7 @@ enum wxAutomationInstanceFlags @library{wxcore} @category{data} - @see wxVariant + @see wxVariant, wxVariantDataCurrency, wxVariantDataErrorCode */ class wxAutomationObject : public wxObject { diff --git a/interface/wx/variant.h b/interface/wx/variant.h index 6fe96be13d..ee3f8db494 100644 --- a/interface/wx/variant.h +++ b/interface/wx/variant.h @@ -26,6 +26,10 @@ the wxVariantData object, unlike the case for basic data types where convenience functions such as GetLong() can be used. + Under Microsoft Windows, two additional wxVariantData-derived classes -- + wxVariantDataCurrency and wxVariantDataErrorCode -- are available for + interoperation with OLE VARIANT when using wxAutomationObject. + Pointers to any wxObject derived class can also easily be stored in a wxVariant. wxVariant will then use wxWidgets' built-in RTTI system to set the type name (returned by GetType()) and to perform type-safety checks at -- 2.45.2