Vous utilisez le lpMultiByteStr [out] paramètre par la création d'un nouveau tableau de char. À vous ensuite de passer ce char tableau pour obtenir qu'il est rempli. Vous avez seulement besoin d'initialiser la longueur de la chaîne + 1, de sorte que vous pouvez avoir une chaîne terminée par null après la conversion.
Voici un couple d'utiles fonctions d'assistance pour vous, ils montrent l'utilisation de tous les paramètres.
#include <string>
std::string wstrtostr(const std::wstring &wstr)
{
// Convert a Unicode string to an ASCII string
std::string strTo;
char *szTo = new char[wstr.length() + 1];
szTo[wstr.size()] = '\0';
WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, szTo, (int)wstr.length(), NULL, NULL);
strTo = szTo;
delete[] szTo;
return strTo;
}
std::wstring strtowstr(const std::string &str)
{
// Convert an ASCII string to a Unicode String
std::wstring wstrTo;
wchar_t *wszTo = new wchar_t[str.length() + 1];
wszTo[str.size()] = L'\0';
MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, wszTo, (int)str.length());
wstrTo = wszTo;
delete[] wszTo;
return wstrTo;
}
--
À tout moment dans la documentation quand vous voyez qu'il a un paramètre qui est un pointeur vers un type, et ils vous disent que c'est une variable, vous aurez envie de créer ce type, et puis la passer dans un pointeur. La fonction va utiliser le pointeur pour remplir votre variable.
Pour que vous compreniez mieux:
//pX is an out parameter, it fills your variable with 10.
void fillXWith10(int *pX)
{
*pX = 10;
}
int main(int argc, char ** argv)
{
int X;
fillXWith10(&X);
return 0;
}