Partager via


COleCurrency, classe

Encapsule le type de données CURRENCY d'OLE automation.

Syntaxe

class COleCurrency

Membres

Constructeurs publics

Nom Description
COleCurrency ::COleCurrency Construit un objet COleCurrency.

Méthodes publiques

Nom Description
COleCurrency ::Format Génère une représentation sous forme de chaîne d’un COleCurrency objet.
COleCurrency ::GetStatus Obtient l’état (validité) de cet COleCurrency objet.
COleCurrency ::P arseCurrency Lit une valeur CURRENCY à partir d’une chaîne et définit la valeur de COleCurrency.
COleCurrency ::SetCurrency Définit la valeur de cet COleCurrency objet.
COleCurrency ::SetStatus Définit l’état (validité) de cet COleCurrency objet.

Opérateurs publics

Nom Description
operator = Copie une COleCurrency valeur.
opérateur +, - Ajoute, soustrait et modifie le signe des COleCurrency valeurs.
operator +=, -= Ajoute et soustrait une COleCurrency valeur de cet COleCurrency objet.
opérateur*/ Met à l’échelle une COleCurrency valeur par une valeur entière.
operator *=, /= Met à l’échelle cette COleCurrency valeur par une valeur entière.
opérateur << Génère une COleCurrency valeur vers CArchive ou CDumpContext.
opérateur >> Entrées d’un COleCurrency objet à partir de CArchive.
opérateur CURRENCY Convertit une COleCurrency valeur en DEVISE.
operator ==, <, <=, etc. Compare deux COleCurrency valeurs.

Membres de données publics

Nom Description
COleCurrency ::m_cur Contient la devise sous-jacente pour cet COleCurrency objet.
COleCurrency ::m_status Contient l’état de cet COleCurrency objet.

Notes

COleCurrency n’a pas de classe de base.

CURRENCY est implémenté sous la forme d’une valeur entière complète de 8 octets, mise à l’échelle de 10 000 octets. Ceci fournit un nombre à virgule fixe avec 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Le type de données CURRENCY est extrêmement utile pour les calculs impliquant de l’argent, ou pour tout calcul à point fixe où la précision est importante. Il s’agit de l’un des types possibles pour le VARIANT type de données d’automatisation OLE.

COleCurrency implémente également certaines opérations arithmétiques de base pour ce type de point fixe. Les opérations prises en charge ont été sélectionnées pour contrôler les erreurs d’arrondi qui se produisent pendant les calculs de point fixe.

Hiérarchie d'héritage

COleCurrency

Spécifications

En-tête : afxdisp.h

COleCurrency ::COleCurrency

Construit un objet COleCurrency.

COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);

COleCurrency(
    long nUnits,
    long nFractionalUnits);

Paramètres

cySrc
Valeur CURRENCY à copier dans le nouvel COleCurrency objet.

curSrc
Objet existant COleCurrency à copier dans le nouvel COleCurrency objet.

varSrc
Structure de données existante VARIANT (éventuellement un COleVariant objet) à convertir en valeur monétaire (VT_CY) et copiée dans le nouvel COleCurrency objet.

nUnits, nFractionalUnits Indiquent les unités et la partie fractionnaire (dans 1/10 000's) de la valeur à copier dans le nouvel COleCurrency objet.

Notes

Tous ces constructeurs créent de nouveaux COleCurrency objets initialisés à la valeur spécifiée. Une brève description de chacun de ces constructeurs suit. Sauf indication contraire, l’état du nouvel COleCurrency élément est défini sur valide.

  • COleCurrency() Construit un COleCurrency objet initialisé à 0 (zéro).

  • COleCurrency(cySrc) Construit un COleCurrency objet à partir d’une valeur CURRENCY .

  • COleCurrency(curSrc) construit un COleCurrency objet à partir d’un objet existant COleCurrency . Le nouvel objet a le même état que l’objet source.

  • COleCurrency(varSrc) Construit un COleCurrency objet. Tente de convertir une structure ou COleVariant un objet VARIANT en valeur monétaire (VT_CY). Si cette conversion réussit, la valeur convertie est copiée dans le nouvel COleCurrency objet. Si ce n’est pas le cas, la valeur de l’objet COleCurrency est définie sur zéro (0) et son état n’est pas valide.

  • COleCurrency(nUnits, nFractionalUnits) Construit un COleCurrency objet à partir des composants numériques spécifiés. Si la valeur absolue de la partie fractionnaire est supérieure à 10 000, l’ajustement approprié est effectué sur les unités. Notez que les unités et la partie fractionnaire sont spécifiées par des valeurs longues signées.

Pour plus d’informations, consultez les entrées CURRENCY et VARIANT dans le Kit de développement logiciel (SDK) Windows.

Exemple

Les exemples suivants montrent les effets des constructeurs zero-parameter et two-parameter :

COleCurrency curZero;         // value: 0.0000
COleCurrency curA(4, 500);    // value: 4.0500
COleCurrency curB(2, 11000);  // value: 3.1000
COleCurrency curC(2, -50);    // value: 1.9950

COleCurrency ::Format

Appelez cette fonction membre pour créer une représentation mise en forme de la valeur monétaire.

CString Format(DWORD  dwFlags = 0, LCID  lcid = LANG_USER_DEFAULT) const;

Paramètres

dwFlags
Indique les indicateurs des paramètres régionaux. Seul l’indicateur suivant s’applique à la devise :

  • LOCALE_NOUSEROVERRIDE Utiliser les paramètres régionaux par défaut du système, plutôt que les paramètres utilisateur personnalisés.

lcid
Indique l’ID de paramètres régionaux à utiliser pour la conversion.

Valeur de retour

Qui CString contient la valeur monétaire mise en forme.

Notes

Il met en forme la valeur à l’aide des spécifications de langue locale (ID de paramètres régionaux). Un symbole monétaire n’est pas inclus dans la valeur retournée. Si l’état de cet COleCurrency objet est Null, la valeur de retour est une chaîne vide. Si l’état n’est pas valide, la chaîne de retour est spécifiée par la ressource de chaîne IDS_INVALID_CURRENCY.

Exemple

COleCurrency curA;           // value: 0.0000
curA.SetCurrency(4, 500);    // value: 4.0500

// value returned: 4.05
curA.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE,
   SUBLANG_CHINESE_SINGAPORE), SORT_DEFAULT));
// value returned: 4,05
curA.Format(0, MAKELCID(MAKELANGID(LANG_GERMAN,
   SUBLANG_GERMAN_AUSTRIAN), SORT_DEFAULT));

COleCurrency ::GetStatus

Appelez cette fonction membre pour obtenir l’état (validité) d’un objet donné COleCurrency .

CurrencyStatus GetStatus() const;

Valeur de retour

Retourne l’état de cette COleCurrency valeur.

Notes

La valeur de retour est définie par le CurrencyStatus type énuméré défini dans la COleCurrency classe.

enum CurrencyStatus {
    valid = 0,
    invalid = 1,
    null = 2
    };

Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :

  • COleCurrency::valid Indique que cet COleCurrency objet est valide.

  • COleCurrency::invalid Indique que cet COleCurrency objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.

  • COleCurrency::null Indique que cet COleCurrency objet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)

L’état d’un COleCurrency objet n’est pas valide dans les cas suivants :

  • Si sa valeur est définie à partir d’un VARIANT ou COleVariant d’une valeur qui n’a pas pu être convertie en valeur monétaire.

  • Si cet objet a connu un dépassement de capacité ou un sous-flux pendant une opération d’affectation arithmétique, par exemple += ou *=.

  • Si une valeur non valide a été affectée à cet objet.

  • Si l’état de cet objet a été défini explicitement sur non valide à l’aide de SetStatus.

Pour plus d’informations sur les opérations qui peuvent définir l’état sur non valide, consultez les fonctions membres suivantes :

Exemple

// even an empty COleCurrency is valid
COleCurrency cy;
ASSERT(cy.GetStatus() == COleCurrency::valid);

// always valid after being set
cy.SetCurrency(4, 500);
ASSERT(cy.GetStatus() == COleCurrency::valid);

// some conversions aren't possible and will
// cause an invalid state, like this:
CByteArray array;
COleVariant varBogus(array);
cy = varBogus;
ASSERT(cy.GetStatus() == COleCurrency::invalid);

COleCurrency ::m_cur

Structure CURRENCY sous-jacente pour cet COleCurrency objet.

Notes

Attention

La modification de la valeur dans la CURRENCY structure accessible par le pointeur retourné par cette fonction modifie la valeur de cet COleCurrency objet. Il ne modifie pas l’état de cet COleCurrency objet.

Pour plus d’informations, consultez l’entrée CURRENCY dans le Kit de développement logiciel (SDK) Windows.

COleCurrency ::m_status

Le type de ce membre de données est le type CurrencyStatusénuméré, qui est défini dans la COleCurrency classe.

enum CurrencyStatus{
    valid = 0,
    invalid = 1,
    null = 2,
};

Notes

Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :

  • COleCurrency::valid Indique que cet COleCurrency objet est valide.

  • COleCurrency::invalid Indique que cet COleCurrency objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.

  • COleCurrency::null Indique que cet COleCurrency objet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)

L’état d’un COleCurrency objet n’est pas valide dans les cas suivants :

  • Si sa valeur est définie à partir d’un VARIANT ou COleVariant d’une valeur qui n’a pas pu être convertie en valeur monétaire.

  • Si cet objet a connu un dépassement de capacité ou un sous-flux pendant une opération d’affectation arithmétique, par exemple += ou *=.

  • Si une valeur non valide a été affectée à cet objet.

  • Si l’état de cet objet a été défini explicitement sur non valide à l’aide de SetStatus.

Pour plus d’informations sur les opérations qui peuvent définir l’état sur non valide, consultez les fonctions membres suivantes :

Attention

Ce membre de données est destiné aux situations de programmation avancées. Vous devez utiliser les fonctions membres inline GetStatus et SetStatus. Pour plus d’informations sur la définition explicite de ce membre de données, consultez SetStatus les avertissements.

COleCurrency ::operator =

Ces opérateurs d’affectation surchargés copient la valeur monétaire source dans cet COleCurrency objet.

const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);

Notes

Une brève description de chaque opérateur suit :

  • operator =( cySrc ) La CURRENCY valeur est copiée dans l’objet COleCurrency et son état est défini sur valide.

  • operator =( curSrc ) La valeur et l’état de l’opérande, un objet existant COleCurrency est copié dans cet COleCurrency objet.

  • operator =( varSrc ) Si la conversion de la valeur (ou de l’objet VARIANT COleVariant) en devise ( VT_CY) réussit, la valeur convertie est copiée dans cet COleCurrency objet et son état est défini sur valide. Si la conversion n’est pas réussie, la valeur de l’objet COleCurrency est définie sur 0 et son état n’est pas valide.

Pour plus d’informations, consultez les entrées CURRENCY et VARIANT dans le Kit de développement logiciel (SDK) Windows.

Exemple

// set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2;

// operator= copies COleCurrency types
cur2 = cur1;
ASSERT(cur1 == cur2);

// can be used to assign a CURRENCY type, as well
CURRENCY cy;
cy.Hi = 0;
cy.Lo = 350050;
cy.int64 = 350050;

// perform assignment
COleCurrency cur3;
cur3 = cy;
ASSERT(cur3 == cur1);

COleCurrency ::operator +, -

Ces opérateurs vous permettent d’ajouter et de soustraire deux COleCurrency valeurs entre elles et de modifier le signe d’une COleCurrency valeur.

COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;

Notes

Si l’un des opérandes a la valeur Null, l’état de la valeur résultante COleCurrency est Null.

Si l’opération arithmétique dépasse, la valeur résultante COleCurrency n’est pas valide.

Si l’opérande n’est pas valide et que l’autre n’est pas null, l’état de la valeur résultante COleCurrency n’est pas valide.

Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .

Exemple

// 35.0050
COleCurrency cur1(35, 50);
// 2.0075
COleCurrency cur2(2, 75);
COleCurrency cur3;

// sum is 37.0125
cur3 = cur1 + cur2;
ASSERT(cur3 == COleCurrency(37, 125));

// difference is 32.9975
cur3 = cur1 - cur2;
ASSERT(cur3 == COleCurrency(32, 9975));

COleCurrency ::operator +=, -=

Permet d’ajouter et de soustraire une COleCurrency valeur à et à partir de cet COleCurrency objet.

const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);

Notes

Si l’un des opérandes a la valeur Null, l’état de cet COleCurrency objet est défini sur Null.

Si l’opération arithmétique dépasse, l’état de cet COleCurrency objet est défini sur non valide.

Si l’un des opérandes n’est pas valide et que l’autre n’est pas null, l’état de cet COleCurrency objet est défini sur non valide.

Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .

Exemple

// both set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2(35, 50);

// adding 2.0075 results in 37.0125
cur1 += COleCurrency(2, 75);
ASSERT(cur1 == COleCurrency(37, 125));

// subtracting 2.0075 results in 32.9975
cur2 -= COleCurrency(2, 75);
ASSERT(cur2 == COleCurrency(32, 9975));

COleCurrency ::operator * et /

Vous pouvez mettre à l’échelle une COleCurrency valeur par une valeur intégrale.

COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;

Notes

Si l’opérande a la COleCurrency valeur Null, l’état de la valeur résultante COleCurrency est Null.

Si l’opération arithmétique dépasse ou sous-flux, l’état de la valeur résultante COleCurrency n’est pas valide.

Si l’opérande COleCurrency n’est pas valide, l’état de la valeur résultante COleCurrency n’est pas valide.

Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .

Exemple

// 35 units and 50/10000, or 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2;

// divided by two is 17.5025
cur2 = cur1 / 2;
ASSERT(cur2 == COleCurrency(17, 5025));

// multiplied by two is 70.0100
cur2 = cur1 * 2;
ASSERT(cur2 == COleCurrency(70, 100));

COleCurrency ::operator *=, /=

Vous pouvez mettre à l’échelle cette COleCurrency valeur par une valeur intégrale.

const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);

Notes

Si l’opérande a la COleCurrency valeur Null, l’état de cet COleCurrency objet est défini sur Null.

Si l’opération arithmétique dépasse, l’état de cet COleCurrency objet est défini sur non valide.

Si l’opérande COleCurrency n’est pas valide, l’état de cet COleCurrency objet est défini sur non valide.

Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .

Exemple

// both set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2(35, 50);

// divide in half
cur1 /= 2;
ASSERT(cur1 == COleCurrency(17, 5025));

// multiply by two
cur2 *= 2;
ASSERT(cur2 == COleCurrency(70, 100));

operator <<, operator >>

Prend en charge le dumping de diagnostic et le stockage dans une archive.

friend CDumpContext& operator<<(
    CDumpContext& dc,
    COleCurrency curSrc);

friend CArchive& operator<<(
    CArchive& ar,
    COleCurrency curSrc);

friend CArchive& operator>>(
    CArchive& ar,
    COleCurrency& curSrc);

Notes

L’opérateur d’extraction ( >>) prend en charge le chargement à partir d’une archive.

COleCurrency ::operator CURRENCY

Retourne une CURRENCY structure dont la valeur est copiée à partir de cet COleCurrency objet.

operator CURRENCY() const;

Notes

COleCurrency ::P arseCurrency

Appelez cette fonction membre pour analyser une chaîne pour lire une valeur monétaire.

BOOL ParseCurrency(
    LPCTSTR lpszCurrency,
    DWORD dwFlags = 0,
    LCID lcid = LANG_USER_DEFAULT);

throw(CMemoryException*);
throw(COleException*);

Paramètres

lpszCurrency
Pointeur vers la chaîne terminée par null qui doit être analysée.

dwFlags
Indique les indicateurs des paramètres régionaux, éventuellement l’indicateur suivant :

  • LOCALE_NOUSEROVERRIDE Utiliser les paramètres régionaux par défaut du système, plutôt que les paramètres utilisateur personnalisés.

lcid
Indique l’ID de paramètres régionaux à utiliser pour la conversion.

Valeur de retour

Différent de zéro si la chaîne a été convertie avec succès en valeur monétaire, sinon 0.

Notes

Il utilise des spécifications de langage local (ID de paramètres régionaux) pour la signification de caractères non numériques dans la chaîne source.

Pour une discussion sur les valeurs d’ID de paramètres régionaux, consultez Prise en charge de plusieurs langues.

Si la chaîne a été correctement convertie en valeur monétaire, la valeur de cet objet est définie sur cette COleCurrency valeur et son état sur valide.

Si la chaîne n’a pas pu être convertie en valeur monétaire ou s’il y avait un dépassement numérique, l’état de cet COleCurrency objet n’est pas valide.

Si la conversion de chaîne a échoué en raison d’erreurs d’allocation de mémoire, cette fonction lève une exception CMemoryException. Dans tout autre état d’erreur, cette fonction lève une exception COleException.

Exemple

// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));

Opérateurs relationnels COleCurrency

Comparez deux valeurs monétaires et retournez une valeur différente de zéro si la condition est vraie ; sinon 0.

BOOL operator==(const COleCurrency& cur) const;
BOOL operator!=(const COleCurrency& cur) const;
BOOL operator<(const COleCurrency& cur) const;
BOOL operator>(const COleCurrency& cur) const;
BOOL operator<=(const COleCurrency& cur) const;
BOOL operator>=(const COleCurrency& cur) const;

Notes

Remarque

La valeur de retour des opérations de classement (<, =<, >>=) n’est pas définie si l’état de l’opérande est null ou non valide. Les opérateurs d’égalité ( , ==!=) considèrent l’état des opérandes.

Exemple

COleCurrency curOne(3, 5000);             // 3.5
COleCurrency curTwo(curOne);              // 3.5
BOOL b = (curOne == curTwo);              // TRUE

b = curOne < curTwo;                      // FALSE, same value
b = curOne > curTwo;                      // FALSE, same value
b = curOne <= curTwo;                     // TRUE, same value
b = curOne >= curTwo;                     // TRUE, same value
curTwo.SetStatus(COleCurrency::invalid);
b = curOne == curTwo;                     // FALSE, different status
b = curOne != curTwo;                     // TRUE, different status

COleCurrency ::SetCurrency

Appelez cette fonction membre pour définir les unités et la partie fractionnaire de cet COleCurrency objet.

void SetCurrency(
    long nUnits,
    long nFractionalUnits);

Paramètres

nUnits, nFractionalUnits Indiquent les unités et la partie fractionnaire (dans 1/10 000's) de la valeur à copier dans cet COleCurrency objet.

Notes

Si la valeur absolue de la partie fractionnaire est supérieure à 10 000, l’ajustement approprié est effectué sur les unités, comme indiqué dans le troisième des exemples suivants.

Notez que les unités et la partie fractionnaire sont spécifiées par des valeurs longues signées. Le quatrième des exemples suivants montre ce qui se passe lorsque les paramètres ont des signes différents.

Exemple

COleCurrency curA;           // value: 0.0000
curA.SetCurrency(4, 500);    // value: 4.0500
curA.SetCurrency(2, 11000);  // value: 3.1000
curA.SetCurrency(2, -50);    // value: 1.9950

COleCurrency ::SetStatus

Appelez cette fonction membre pour définir l’état (validité) de cet COleCurrency objet.

void SetStatus(CurrencyStatus  status  );

Paramètres

statut
Nouvel état de cet COleCurrency objet.

Notes

La valeur du paramètre d’état est définie par le CurrencyStatus type énuméré, qui est défini dans la COleCurrency classe.

enum CurrencyStatus {
    valid = 0,
    invalid = 1,
    null = 2
    };

Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :

  • COleCurrency::valid Indique que cet COleCurrency objet est valide.

  • COleCurrency::invalid Indique que cet COleCurrency objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.

  • COleCurrency::null Indique que cet COleCurrency objet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)

Attention

Cette fonction est destinée aux situations de programmation avancées. Cette fonction ne modifie pas les données de cet objet. Il sera le plus souvent utilisé pour définir l’état sur Null ou non valide. Notez que l’opérateur d’affectation ( operator =) et SetCurrency définissent l’état sur l’objet en fonction de la ou des valeurs sources.

Voir aussi

Graphique hiérarchique
COleVariant, classe