CString str="taet";
void* ptr=(void*)(LPTSTR)(LPCTSTR)str;CString strin=(LPTSTR)ptr;//strin返回了taet;
以上语句能很好返回,但是写成如下形式的函数就出现了问题,VOID* CEditDlg::Change()
{
CString str="taet";
void* ptr=(void*)(LPTSTR)(LPCTSTR)str;
return ptr;}BOOL CEditDlg::OnInitDialog()
{
void* ptring=Change();
CString string1=(LPTSTR)ptring;
//返回的是乱码
}
void* ptr=(void*)(LPTSTR)(LPCTSTR)str;CString strin=(LPTSTR)ptr;//strin返回了taet;
以上语句能很好返回,但是写成如下形式的函数就出现了问题,VOID* CEditDlg::Change()
{
CString str="taet";
void* ptr=(void*)(LPTSTR)(LPCTSTR)str;
return ptr;}BOOL CEditDlg::OnInitDialog()
{
void* ptring=Change();
CString string1=(LPTSTR)ptring;
//返回的是乱码
}
{
case VT_DECIMAL:
{
FLOAT TempValue=0;
this->ChangeDecimalToFloat(TheValue.decVal,TempValue);
ResultPtr=(void*)&TempValue;
break;
}
case VT_BSTR:
{
ItemTextADO=(char*)(_bstr_t)TheValue;
ResultPtr=(void*)(LPTSTR)(LPCTSTR)ItemTextADO;
// ResultPtr=(void*)(char*)(_bstr_t)TheValue;
break;
}
case VT_DATE:
{
ItemTextADO=(char*)(_bstr_t)TheValue;
ResultPtr=(void*)(LPTSTR)(LPCTSTR)ItemTextADO;
break;
}按照你的指点,我将ItemTextADO(cstring)变量设为类的私有成员,ResultPtr
所指向的内容就不再被销毁,在其他函数通过相应的转换即可获得指针所指向的内容.但我还是有一点不明白: 在case VT_DECIMAL:中, FLOAT TempValue也是局部变量,
为什么ResultPtr指向它时, 在其他函数内能访问到它所指向的内容,而没有象上面一样而
被销毁,不能获得所指向的内容?