Поделиться через


Функция LoadStringW (winuser.h)

Загружает строковый ресурс из исполняемого файла, связанного с указанным модулем, и либо копирует строку в буфер с завершающим символом NULL, либо возвращает указатель только для чтения на сам строковый ресурс.

Синтаксис

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

Параметры

[in, optional] hInstance

Тип: HINSTANCE

Дескриптор экземпляра модуля, исполняемый файл которого содержит строковый ресурс. Чтобы получить дескриптор для самого приложения, вызовите функцию GetModuleHandle со значением NULL.

[in] uID

Тип: UINT

Идентификатор загружаемой строки.

[out] lpBuffer

Тип: LPTSTR

Буфер для получения строки (если cchBufferMax не равен нулю) или указатель только для чтения на сам строковый ресурс (если cchBufferMax равен нулю). Длина должна быть достаточной для хранения указателя (8 байт).

[in] cchBufferMax

Тип: int

Размер буфера в символах. Строка усечена и заканчивается значением NULL, если она превышает указанное число символов. Если этот параметр равен 0, lpBuffer получает указатель только для чтения на сам строковый ресурс.

Возвращаемое значение

Тип: int

Если функция выполняется успешно, возвращается одно из следующих значений:

  • Число символов, скопированных в буфер (если cchBufferMax не равно нулю), не включая завершающий символ NULL.
  • Количество символов в строковом ресурсе, на которое указывает lpBuffer (если cchBufferMax равно нулю). Строковый ресурс не гарантирует, что в таблице ресурсов модуля заканчивается значением NULL, и это значение можно использовать для определения того, где заканчивается строковый ресурс.
  • Ноль, если строковый ресурс не существует.

Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если передать значение 0 в cchBufferMax для возврата указателя только для чтения на строковый ресурс в параметре lpBuffer , используйте количество символов в возвращаемом значении, чтобы определить длину строкового ресурса. Строковые ресурсы не гарантированно завершаются нулевым значением в таблице ресурсов модуля. Однако таблицы ресурсов могут содержать символы NULL. Строковые ресурсы хранятся в блоках из 16 строк, а все пустые слоты в блоке обозначаются символами NULL.

Примечания по безопасности

Неправильное использование этой функции может поставить под угрозу безопасность приложения. Неправильное использование включает указание неправильного размера в параметре nBufferMax . Например, если lpBuffer указывает на буфер szBuffer , который объявлен как TCHAR szBuffer[100], то sizeof(szBuffer) задает размер буфера в байтах, что может привести к переполнению буфера для версии Функции в Юникоде. Ситуации переполнения буфера являются причиной многих проблем безопасности в приложениях. В этом случае использование sizeof(szBuffer)/sizeof(TCHAR) или sizeof(szBuffer)/sizeof(szBuffer[0]) даст правильный размер буфера.

Примеры

Пример см. в разделе Создание дочернего окна.

Примечание

Заголовок winuser.h определяет LoadString в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

Основные понятия

FormatMessage

LoadAccelerators

LoadBitmap

LoadCursor

LoadIcon

LoadMenu

LoadMenuIndirect

Другие ресурсы

Справочные материалы

Строки