Introduction
As a VC++ programmer. and if you are using VC.NET you may try to use your old leagcy code under the .NET framwork.
When I tried to use some of my old C++ code, I encountered the problem of data types conversion in .NET framework. I thought that Microsoft will handle the data types issue in .NET in a better manner.
Any way, one of the problems I had, is to use a function that receives a parameter of LPCTSTR
data type. In .NET you can use the managed String* data type but the compiler will complain as it can't convert managed String* data type to LPCTSTR
data type.
The problem has been handled through the StringToHGlobalAnsi
method of Marshal
class provided in the .NET framework, but it's not that easy.You have to make some static casts.
I thought there might some other people who encounter the same problem, so I decided to make a small class that has just two methods to convert from managed String*
data type to unmanaged LPCTSTR
data type. any way I have put the code in a class, but you can use it in your manner.
The two methods are:
LPCTSTR AnsiStrings::ConvertStringToLPCTSTR(String* sString)
you only need to pass your String*
variable to it and receives a LPCTSTR
variable.
void AnsiStrings::ReleaseLPCTSTR(LPCTSTR lpsString)
this method will release the memory holded for our leagacy LPCTSTR
varaible.
It's a small class, but I hope the begginers in VC.NET can make best use of it.