返回LPWSTR& foo到一个函数

时间:2014-12-17 05:51:15

标签: c++ mfc

这一点不起作用。如何解决它。我知道CStrings在调用函数后离开堆栈。是C ++ std:strings等的任何类型的字符串。这就像C#字符串一样。我是如何让它工作的?

void Dialog1::GetOrderingKey(LPWSTR& lpOrderingKey)
{
   CString OrderingKey;
   m_Result.GetWindowText(OrderingKey);
  lpOrderingKey = OrderingKey.GetBuffer(0);
}

  LPWSTR lpOrderingKey;
  GetOrderingKey(lpOrderingKey);

  int returnValue = lpfnDllOrderingCodeDataW(lpSerialNumber, lpOrderingKey, data, _countof(data));

2 个答案:

答案 0 :(得分:3)

只需从GetOrderingKey()返回一个CString:

CString Dialog1::GetOrderingKey()
{
   CString OrderingKey;
   m_Result.GetWindowText(OrderingKey);
   return OrderingKey;
}

CString ordering_key = GetOrderingKey();

int returnValue = lpfnDllOrderingCodeDataW(lpSerialNumber, (LPCWSTR) ordering_key, data, _countof(data));

答案 1 :(得分:-3)

一种直接且最简单的方法是将其声明为静态。

void Dialog1::GetOrderingKey(LPWSTR& lpOrderingKey)
{
   static CString OrderingKey;