Partager via


Fonction LoadStringW (winuser.h)

Charge une ressource de chaîne à partir du fichier exécutable associé à un module spécifié et copie la chaîne dans une mémoire tampon avec un caractère null de fin ou retourne un pointeur en lecture seule vers la ressource de chaîne elle-même.

Syntaxe

int LoadStringW(
  [in, optional] HINSTANCE hInstance,
  [in]           UINT      uID,
  [out]          LPWSTR    lpBuffer,
  [in]           int       cchBufferMax
);

Paramètres

[in, optional] hInstance

Type : HINSTANCE

Handle d’un instance du module dont le fichier exécutable contient la ressource de chaîne. Pour obtenir le handle de l’application elle-même, appelez la fonction GetModuleHandle avec NULL.

[in] uID

Type : UINT

Identificateur de la chaîne à charger.

[out] lpBuffer

Type : LPTSTR

Mémoire tampon pour recevoir la chaîne (si cchBufferMax est différent de zéro) ou pointeur en lecture seule vers la ressource de chaîne elle-même (si cchBufferMax est égal à zéro). Doit avoir une longueur suffisante pour contenir un pointeur (8 octets).

[in] cchBufferMax

Type : int

Taille de la mémoire tampon, en caractères. La chaîne est tronquée et terminée par null si elle est plus longue que le nombre de caractères spécifié. Si ce paramètre est 0, lpBuffer reçoit un pointeur en lecture seule vers la ressource de chaîne elle-même.

Valeur retournée

Type : int

Si la fonction réussit, la valeur de retour est l’une des suivantes :

  • Nombre de caractères copiés dans la mémoire tampon (si cchBufferMax est différent de zéro), sans inclure le caractère null de fin.
  • Nombre de caractères dans la ressource de chaîne vers laquelle lpBuffer pointe (si cchBufferMax est égal à zéro). Il n’est pas garanti que la ressource de chaîne se termine par une valeur Null dans la table de ressources du module, et vous pouvez utiliser cette valeur pour déterminer l’emplacement où la ressource de chaîne se termine.
  • Zéro si la ressource de chaîne n’existe pas.

Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Si vous passez 0 à cchBufferMax pour renvoyer un pointeur en lecture seule vers la ressource string dans le paramètre lpBuffer , utilisez le nombre de caractères dans la valeur de retour pour déterminer la longueur de la ressource de chaîne. Il n’est pas garanti que les ressources de chaîne se terminent par une valeur Null dans la table de ressources du module. Toutefois, les tables de ressources peuvent contenir des caractères null. Les ressources de chaîne sont stockées dans des blocs de 16 chaînes, et tous les emplacements vides d’un bloc sont indiqués par des caractères null.

Remarques sur la sécurité

L’utilisation incorrecte de cette fonction peut compromettre la sécurité de votre application. Une utilisation incorrecte inclut la spécification de la taille incorrecte dans le paramètre nBufferMax . Par exemple, si lpBuffer pointe vers un tampon szBuffer qui est déclaré comme TCHAR szBuffer[100], sizeof(szBuffer) donne la taille de la mémoire tampon en octets, ce qui peut entraîner un dépassement de mémoire tampon pour la version Unicode de la fonction. Les situations de dépassement de mémoire tampon sont à l’origine de nombreux problèmes de sécurité dans les applications. Dans ce cas, l’utilisation sizeof(szBuffer)/sizeof(TCHAR) ou sizeof(szBuffer)/sizeof(szBuffer[0]) donnerait la taille appropriée de la mémoire tampon.

Exemples

Pour obtenir un exemple, consultez Création d’une fenêtre enfant

Notes

L’en-tête winuser.h définit LoadString comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll

Voir aussi

Conceptuel

FormatMessage

LoadAccelerators

LoadBitmap

LoadCursor

LoadIcon

LoadMenu

LoadMenuIndirect

Autres ressources

Référence

Chaînes