다음을 통해 공유


COleCurrency 클래스

OLE 자동화의 CURRENCY 데이터 형식을 캡슐화합니다.

구문

class COleCurrency

멤버

공용 생성자

속성 설명
COleCurrency::COleCurrency COleCurrency 개체를 생성합니다.

공용 메서드

이름 설명
COleCurrency::Format 개체의 형식이 지정된 문자열 표현을 COleCurrency 생성합니다.
COleCurrency::GetStatus COleCurrency 개체의 상태(유효성)를 가져옵니다.
COleCurrency::P arseCurrency 문자열에서 CURRENCY 값을 읽고 값을 설정합니다 COleCurrency.
COleCurrency::SetCurrency COleCurrency 개체의 값을 설정합니다.
COleCurrency::SetStatus COleCurrency 개체의 상태(유효성)를 설정합니다.

Public 연산자

이름 설명
연산자 = 값을 복사합니다 COleCurrency .
연산자 +, - 값의 COleCurrency 기호를 추가, 빼기 및 변경합니다.
연산자 +=, -= COleCurrency 개체에서 값을 추가하고 뺍니다COleCurrency.
연산자*/ 정수 COleCurrency 값으로 값의 크기를 조정합니다.
연산자 *=, /= COleCurrency 값의 크기를 정수 값으로 조정합니다.
연산자 << 값을 COleCurrency 에 출력 CArchive 합니다 CDumpContext.
연산자 >> 에서 개체를 COleCurrency 입력합니다 CArchive.
연산자 CURRENCY 값을 CURRENCY로 변환합니다 COleCurrency .
operator ==, <, <=, etc. COleCurrency 값을 비교합니다.

공용 데이터 멤버

이름 설명
COleCurrency::m_cur COleCurrency 개체의 기본 CURRENCY를 포함합니다.
COleCurrency::m_상태 COleCurrency 개체의 상태 포함합니다.

설명

COleCurrency 에는 기본 클래스가 없습니다.

CURRENCY는 10,000으로 확장된 8 바이트, 2의 보수 정수 값으로 구현됩니다. 소수점 기호 왼쪽에는 15자리 고정 소수점 번호가 있고 오른쪽에는 4자리 고정 소수점 번호가 있습니다. CURRENCY 데이터 형식은 돈과 관련된 계산이나 정확도가 중요한 고정 소수점 계산에 매우 유용합니다. OLE 자동화의 데이터 형식에 사용할 수 있는 VARIANT 형식 중 하나입니다.

COleCurrency 또한 이 고정 소수점 형식에 대한 몇 가지 기본 산술 연산을 구현합니다. 고정 소수점 계산 중에 발생하는 반올림 오류를 제어하기 위해 지원되는 작업이 선택되었습니다.

상속 계층 구조

COleCurrency

요구 사항

헤더: afxdisp.h

COleCurrency::COleCurrency

COleCurrency 개체를 생성합니다.

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

COleCurrency(
    long nUnits,
    long nFractionalUnits);

매개 변수

cySrc
COleCurrency 개체에 복사할 CURRENCY 값입니다.

curSrc
COleCurrency 개체에 복사할 기존 COleCurrency 개체입니다.

varSrc
통화 값(VT_CY)으로 변환하고 새 COleCurrency 개체로 복사할 기존 VARIANT 데이터 구조(개체일 수 있음COleVariant)입니다.

nUnits, nFractionalUnitsCOleCurrency 개체에 복사할 값의 단위 및 소수 부분(1/10,000초)을 나타냅니다.

설명

이러한 모든 생성자는 지정된 값으로 초기화된 새 COleCurrency 개체를 만듭니다. 이러한 각 생성자에 대한 간략한 설명은 다음과 같습니다. 달리 명시되지 않는 한 새 COleCurrency 항목의 상태 유효한 것으로 설정됩니다.

  • COleCurrency() 0으로 초기화된 개체를 생성 COleCurrency 합니다.

  • COleCurrency(cySrc) CURRENCY 값에서 개체를 생성합니다COleCurrency.

  • COleCurrency(curSrc) 기존 COleCurrency 개체에서 개체를 생성 COleCurrency 합니다. 새 개체의 상태 원본 개체와 동일합니다.

  • COleCurrency(varSrc) 개체를 COleCurrency 생성합니다. VARIANT 구조 또는 COleVariant 개체를 통화(VT_CY) 값으로 변환하려고 시도합니다. 이 변환에 성공하면 변환된 값이 새 COleCurrency 개체로 복사됩니다. 그렇지 않으면 개체의 COleCurrency 값이 0으로 설정되고 해당 상태 유효하지 않습니다.

  • COleCurrency(nUnits, nFractionalUnits) 지정된 숫자 구성 요소에서 개체를 생성 COleCurrency 합니다. 소수 부분의 절대값이 10,000보다 크면 단위를 적절하게 조정합니다. 단위 및 소수 부분은 부가된 long 값으로 지정됩니다.

자세한 내용은 Windows SDK의 CURRENCYVARIANT 항목을 참조하세요.

예시

다음 예제에서는 매개 변수 0개와 매개 변수 2개 생성자의 효과를 보여 줍니다.

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

이 멤버 함수를 호출하여 통화 값의 형식이 지정된 표현을 만듭니다.

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

매개 변수

dwFlags
로캘 설정에 대한 플래그를 나타냅니다. 다음 플래그만 통화와 관련이 있습니다.

  • LOCALE_NOUSEROVERRIDE 사용자 지정 사용자 설정 대신 시스템 기본 로캘 설정을 사용합니다.

lcid
변환에 사용할 로캘 ID를 나타냅니다.

Return Value

형식이 지정된 통화 값을 포함하는 A CString 입니다.

설명

로컬 언어 사양(로캘 ID)을 사용하여 값의 형식을 지정합니다. 통화 기호는 반환되는 값에 포함되지 않습니다. 이 COleCurrency 개체의 상태 null이면 반환 값은 빈 문자열입니다. 상태 잘못된 경우 반환 문자열은 문자열 리소스 IDS_INVALID_CURRENCY 의해 지정됩니다.

예시

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

이 멤버 함수를 호출하여 지정된 COleCurrency 개체의 상태(유효성)를 가져옵니다.

CurrencyStatus GetStatus() const;

Return Value

COleCurrency 값의 상태 반환합니다.

설명

반환 값은 클래스 내에 정의된 열거형 형식으로 COleCurrency 정의 CurrencyStatus 됩니다.

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

이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.

  • COleCurrency::validCOleCurrency 개체가 유효하다는 것을 나타냅니다.

  • COleCurrency::invalidCOleCurrency 개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.

  • COleCurrency::nullCOleCurrency 개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)

다음과 같은 경우 개체의 COleCurrency 상태 유효하지 않습니다.

  • 값이 VARIANT 또는 COleVariant 통화 값으로 변환할 수 없는 값에서 설정된 경우

  • 이 개체가 산술 할당 작업 중에 오버플로 또는 언더플로가 발생한 경우(예 +=*=:

  • 이 개체에 잘못된 값이 할당된 경우

  • SetStatus를 사용하여 이 개체의 상태 명시적으로 유효하지 않은 것으로 설정된 경우

상태 잘못된 것으로 설정할 수 있는 작업에 대한 자세한 내용은 다음 멤버 함수를 참조하세요.

예시

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

COleCurrency 개체의 기본 CURRENCY 구조체입니다.

설명

주의

이 함수에서 CURRENCY 반환된 포인터에서 액세스하는 구조체의 값을 변경하면 이 개체의 값이 COleCurrency 변경됩니다. 이 COleCurrency 개체의 상태 변경하지 않습니다.

자세한 내용은 Windows SDK의 CURRENCY 항목을 참조하세요.

COleCurrency::m_상태

이 데이터 멤버의 형식은 클래스 내에서 COleCurrency 정의된 열거형 형식CurrencyStatus입니다.

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

설명

이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.

  • COleCurrency::validCOleCurrency 개체가 유효하다는 것을 나타냅니다.

  • COleCurrency::invalidCOleCurrency 개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.

  • COleCurrency::nullCOleCurrency 개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)

다음과 같은 경우 개체의 COleCurrency 상태 유효하지 않습니다.

  • 값이 VARIANT 또는 COleVariant 통화 값으로 변환할 수 없는 값에서 설정된 경우

  • 이 개체가 산술 할당 작업 중에 오버플로 또는 언더플로가 발생한 경우(예 +=*=:

  • 이 개체에 잘못된 값이 할당된 경우

  • SetStatus를 사용하여 이 개체의 상태 명시적으로 유효하지 않은 것으로 설정된 경우

상태 잘못된 것으로 설정할 수 있는 작업에 대한 자세한 내용은 다음 멤버 함수를 참조하세요.

주의

이 데이터 멤버는 고급 프로그래밍 상황에 적합합니다. 인라인 멤버 함수 GetStatusSetStatus를 사용해야 합니다. 이 데이터 멤버를 명시적으로 설정하는 방법에 대한 추가 주의 사항은 참조 SetStatus 하세요.

COleCurrency::operator =

이러한 오버로드된 할당 연산자는 원본 통화 값을 이 COleCurrency 개체에 복사합니다.

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

설명

각 연산자에 대한 간략한 설명은 다음과 같습니다.

  • operator =(cySrc) 값이 CURRENCY 개체에 COleCurrency 복사되고 해당 상태 유효한 값으로 설정됩니다.

  • operator =(curSrc) 피연산자의 값과 상태 기존 COleCurrency 개체가 이 COleCurrency 개체에 복사됩니다.

  • operator =(varSrc) 값(또는 COleVariant 개체)을 통화(VT_CY)로 변환 VARIANT 하는 데 성공하면 변환된 값이 이 COleCurrency 개체에 복사되고 해당 상태 유효한 값으로 설정됩니다. 변환에 실패하면 개체 값 COleCurrency 이 0으로 설정되고 해당 상태 유효하지 않습니다.

자세한 내용은 Windows SDK의 CURRENCYVARIANT 항목을 참조하세요.

예시

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

이러한 연산자를 사용하면 두 COleCurrency 값을 서로 추가 및 빼고 값의 COleCurrency 기호를 변경할 수 있습니다.

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

설명

피연산자 중 하나가 null이면 결과 COleCurrency 값의 상태 null입니다.

산술 연산이 오버플로되면 결과 COleCurrency 값이 잘못되었습니다.

피연산자는 유효하지 않고 다른 피연산자는 null이 아니면 결과 COleCurrency 값의 상태 유효하지 않습니다.

유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_상태 멤버 변수를 참조하세요.

예시

// 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 +=, -=

COleCurrency 개체에서 값을 추가하고 뺄 COleCurrency 수 있습니다.

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

설명

피연산자 중 하나가 null이면 이 COleCurrency 개체의 상태 null로 설정됩니다.

산술 연산이 오버플로되면 이 COleCurrency 개체의 상태 잘못된 것으로 설정됩니다.

피연산자 중 하나가 유효하지 않고 다른 피연산자가 null이 아니면 이 COleCurrency 개체의 상태 유효하지 않은 것으로 설정됩니다.

유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_상태 멤버 변수를 참조하세요.

예시

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

정수 값으로 COleCurrency 값을 조정할 수 있습니다.

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

설명

피연산자 COleCurrency null이면 결과 COleCurrency 값의 상태 null입니다.

산술 연산이 오버플로되거나 언더플로되는 경우 결과 COleCurrency 값의 상태 유효하지 않습니다.

피연산자 COleCurrency 유효하지 않으면 결과 COleCurrency 값의 상태 유효하지 않습니다.

유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_상태 멤버 변수를 참조하세요.

예시

// 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 *=, /=

COleCurrency 값을 정수 값으로 조정할 수 있습니다.

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

설명

피연산자가 COleCurrency null이면 이 COleCurrency 개체의 상태 null로 설정됩니다.

산술 연산이 오버플로되면 이 COleCurrency 개체의 상태 잘못된 것으로 설정됩니다.

피연산자가 COleCurrency 유효하지 않으면 이 COleCurrency 개체의 상태 유효하지 않은 것으로 설정됩니다.

유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_상태 멤버 변수를 참조하세요.

예시

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

진단 덤프 및 보관에 저장을 지원합니다.

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

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

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

설명

추출( >>) 연산자는 보관 파일에서 로드를 지원합니다.

COleCurrency::operator CURRENCY

CURRENCYCOleCurrency 개체에서 값이 복사되는 구조를 반환합니다.

operator CURRENCY() const;

설명

COleCurrency::P arseCurrency

이 멤버 함수를 호출하여 문자열을 구문 분석하여 통화 값을 읽습니다.

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

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

매개 변수

lpszCurrency
구문 분석할 null로 끝나는 문자열에 대한 포인터입니다.

dwFlags
로캘 설정에 대한 플래그를 나타내며, 다음과 같은 플래그일 수 있습니다.

  • LOCALE_NOUSEROVERRIDE 사용자 지정 사용자 설정 대신 시스템 기본 로캘 설정을 사용합니다.

lcid
변환에 사용할 로캘 ID를 나타냅니다.

Return Value

문자열이 통화 값으로 변환된 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

원본 문자열에서 숫자가 아닌 문자의 의미에 로컬 언어 사양(로캘 ID)을 사용합니다.

로캘 ID 값에 대한 자세한 내용은 여러 언어 지원을 참조 하세요.

문자열이 통화 값으로 변환된 경우 이 COleCurrency 개체의 값이 해당 값으로 설정되고 해당 값이 유효한 상태.

문자열을 통화 값으로 변환할 수 없거나 숫자 오버플로가 있는 경우 이 COleCurrency 개체의 상태 유효하지 않습니다.

메모리 할당 오류로 인해 문자열 변환에 실패한 경우 이 함수는 CMemoryExceptionthrow합니다. 다른 오류 상태에서 이 함수는 COleExceptionthrow합니다.

예시

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

COleCurrency 관계형 연산자

두 통화 값을 비교하고 조건이 true이면 0이 아닌 값을 반환합니다. 그렇지 않으면 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;

설명

참고 항목

피연산자의 상태 null이거나 잘못된 경우 순서 지정 작업(<, <=, >, >=)의 반환 값이 정의되지 않습니다. 같음 연산자(==, !=)는 피연산자의 상태 고려합니다.

예시

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

이 멤버 함수를 호출하여 이 COleCurrency 개체의 단위 및 소수 부분을 설정합니다.

void SetCurrency(
    long nUnits,
    long nFractionalUnits);

매개 변수

nUnits, nFractionalUnitsCOleCurrency 개체에 복사할 값의 단위 및 소수 부분(1/10,000초)을 나타냅니다.

설명

소수 부분의 절대값이 10,000보다 크면 다음 예제의 세 번째와 같이 단위를 적절하게 조정합니다.

단위 및 소수 부분은 부가된 long 값으로 지정됩니다. 다음 예제의 네 번째 예제는 매개 변수에 다른 징후가 있을 때 발생하는 동작을 보여 줍니다.

예시

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

이 멤버 함수를 호출하여 이 COleCurrency 개체의 상태(유효성)를 설정합니다.

void SetStatus(CurrencyStatus  status  );

매개 변수

status
COleCurrency 개체의 새 상태.

설명

상태 매개 변수 값은 클래스 내에서 정의된 열거형 형식에 COleCurrency 의해 CurrencyStatus 정의됩니다.

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

이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.

  • COleCurrency::validCOleCurrency 개체가 유효하다는 것을 나타냅니다.

  • COleCurrency::invalidCOleCurrency 개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.

  • COleCurrency::nullCOleCurrency 개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)

주의

이 함수는 고급 프로그래밍 상황에 적합합니다. 이 함수는 이 개체의 데이터를 변경하지 않습니다. 상태 null 또는 유효하지 않음으로 설정하는 데 가장 자주 사용됩니다. 대입 연산자(연산자 =) 및 SetCurrency는 원본 값에 따라 개체의 상태 설정합니다.

참고 항목

계층 구조 차트
COleVariant 클래스