Bonjour à tous,

Voici un petit casse-tête dont je ne me sors pas.
Je tente de récupérer un wstring dans un wchar, et le wchar résultant n'est pas conforme, pourtant la taille semble correcte.
Je m'explique : je m'attend à recevoir la chaine "Pouet", or je ne reçois que "P".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
WCHAR wcTemp[STRING_MAXIMAL_SIZE];
std::wstring Name; // Ceci est rempli ailleurs, et vaut "Pouet"
// Test 1
swprintf_s(wcTemp, STRING_MAXIMAL_SIZE, L"%s", Name.c_str());
// Test 2
wcscpy_s(wcTemp, STRING_MAXIMAL_SIZE, Name.c_str());
 
if (wcslen(wcTemp) < 3)
{
	WCHAR Plop[10];
	swprintf_s(Plop, 10, L"%d", my_data->my_parameter.Name.size());
	MessageBox(hwnd, wcTemp, Plop, MB_OK);
}
// Même sur le test 3:
if (wcslen(wcTemp) < 3)
{
	MessageBox(hwnd, wcTemp, my_data->my_parameter.Name.c_str(), MB_OK);
}
Et là, le miracle arrive :
Tests 1 et 2, la message box m'affiche, en titre, 5, et dans le texte : "P"
Test 3, la messagebox m'affiche, en titre, "P", et dans le texte : "P".
Je ne comprend pas.

Petites précisions:
1°) Ceci est fait sous WinCE6.0
2°) Ces modifications sont faites dans des threads gérants des lignes (un thread par ligne), et cela n'arrive très généralement qu'au bout de 146 lignes... Toutes les autres lignes sont bonnes !
3°) Lorsque j'ai déjà affiché une première fois, pas de problème lors du second affichage.

Si vous avez une idée, ou besoin de précisions, n'hésitez pas

Merci