Функция 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 |
См. также раздел
Основные понятия
Другие ресурсы
Справочные материалы