Bonjour,
Je developpe une application sous Windows CE.
J'ai un petit problème avec cette ligne, je ne trouve pas la solution.
Voici l'erreur du compilateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14void CHeaderCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { ASSERT(lpDrawItemStruct->CtlType == ODT_HEADER); HDITEM hdi; TCHAR lpBuffer[256]; hdi.mask = HDI_TEXT; hdi.pszText = lpBuffer; hdi.cchTextMax = 256; ::DrawText(lpDrawItemStruct->hDC, lpBuffer, strlen(lpBuffer), &lpDrawItemStruct->rcItem, uFormat); }
Erreur 1 error C2664: 'strlen'*: impossible de convertir le paramètre 1 de 'TCHAR [256]' en 'const char *'








Répondre avec citation

... ça se trouve t'es en unicode et il veut des wchar_t
, toutes commencent par _t (voir include TCHAR.H)




En aucun cas tu peux faire un _tcslen() sur un buffer qui n'est pas terminé par 0, car la fonction va compter les caractères jusqu'au 0. S'il n'y en a pas avant la fin de ton buffer (256 caractères), tu auras un dépassement de mémoire et une erreur (CRT je crois).


Partager