⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 argument.cpp

📁 Windows CE 6.0 Server 源码
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft shared
// source or premium shared source license agreement under which you licensed
// this source code. If you did not accept the terms of the license agreement,
// you are not authorized to use this source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the SOURCE.RTF on your install media or the root of your tools installation.
// THE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "pch.h"
#pragma hdrstop

#include "Argument.h"
#include "StateVar.h"


// ToString
LPCWSTR Argument::ToString() const
{
	if(EncodeValue())
		return m_strValue;
	else
		return NULL;
}


// GetValue
HRESULT Argument::GetValue(VARIANTARG* pvarValue) const
{
	if(m_varValue.vt == VT_EMPTY)
	{
		VariantClear(pvarValue);
		
		pvarValue->vt = VT_ERROR;
		pvarValue->scode = DISP_E_PARAMNOTFOUND;

		return S_OK;
	}
	
	return VariantCopy(pvarValue, const_cast<VARIANT*>(static_cast<const VARIANT*>(&m_varValue)));
}


// GetVartype
VARTYPE Argument::GetVartype() const
{
	if(m_pStateVar)
		return m_pStateVar->GetVartype();
	else
		return 0xFFFF;
}


// BindStateVar
void Argument::BindStateVar(ce::vector<StateVar>::const_iterator it, ce::vector<StateVar>::const_iterator itEnd)
{
	for(; it != itEnd; ++it)
		if(it->GetName() == m_strStateVar)
			m_pStateVar = &*it;
}


// EncodeValue
bool Argument::EncodeValue() const
{
	if(m_pStateVar)
		return m_pStateVar->Encode(m_varValue, &m_strValue);
	
	return false;
}


// DecodeValue
void Argument::DecodeValue(LPCWSTR pwszValue)
{
	Reset();
	
	if(m_pStateVar)
		m_pStateVar->Decode(pwszValue, &m_varValue);
	else
	{
		Assert(m_varValue.vt == VT_EMPTY);

		m_varValue.vt = VT_ERROR;
		m_varValue.scode = DISP_E_TYPEMISMATCH;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -