首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

为何这个编译不过去

2012-12-31 
为什么这个编译不过去?我的ocx控件中,一个属性TradeCode,BSTR型。编译就报错,说未定义 _TradeCode去掉_后,g

为什么这个编译不过去?
我的ocx控件中,一个属性TradeCode,BSTR型。编译就报错,说未定义 _TradeCode
去掉_后,get倒是不报错了,set又报了。是不是我这样写错了?这方法是我一个朋友告诉我他是这样写的。

STDMETHODIMP Tricom_sjzImpl::get_TradeCode(BSTR* Value)
{
  try
  {
* Value = WideString(_TradeCode).Copy();
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_Iricom_sjz);
  }
  return S_OK;
};


STDMETHODIMP Tricom_sjzImpl::set_TradeCode(BSTR Value)
{
  try
  {
      _TradeCode  = AnsiString(Value);
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_Iricom_sjz);
  }
  return S_OK;
};
[解决办法]
你需要定义一个变量或数组来存储这个属性的值,例如在Imp单元头文件中的TActiveFormX类中添加:
public:// User declarations
    wchar_t szTradeCode[256];

然后在Imp单元的.cpp文件中:

STDMETHODIMP Tricom_sjzImpl::get_TradeCode(BSTR* Value)
{
  try
  {
      wcscpy(*Value, m_VclCtl->szTradeCode);
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_IActiveFormX);
  }
  return S_OK;
};


STDMETHODIMP Tricom_sjzImpl::set_TradeCode(BSTR Value)
{
  try
  {
      wcscpy(m_VclCtl->szTradeCode, Value);
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_IActiveFormX);
  }
  return S_OK;
};

热点排行