LoadStringW 函式 (winuser.h)
從與指定模組相關聯的可執行檔載入字串資源,並將字串複製到具有終止 Null 字元的緩衝區,或傳回字串資源本身的只讀指標。
語法
int LoadStringW(
[in, optional] HINSTANCE hInstance,
[in] UINT uID,
[out] LPWSTR lpBuffer,
[in] int cchBufferMax
);
參數
[in, optional] hInstance
類型: HINSTANCE
模組實例的句柄,其可執行檔包含字串資源。 若要取得應用程式本身的句柄,請使用NULL呼叫 GetModuleHandle 函式。
[in] uID
類型: UINT
要載入之字串的識別碼。
[out] lpBuffer
類型: LPTSTR
如果 cchBufferMax 不是零) 或字串資源 (本身的只讀指標,則接收字串 (緩衝區,如果 cchBufferMax 為零) 則為只讀指標。 必須有足夠的長度,才能保存指標 (8 個字節) 。
[in] cchBufferMax
類型: int
緩衝區的大小,以字元為單位。 如果字串的長度超過指定的字元數,則會截斷字串,並以 Null 結束。 如果此參數為 0, 則 lpBuffer 會收到字串資源本身的唯讀指標。
傳回值
類型: int
如果函式成功,傳回值為下列其中一項:
- 如果 cchBufferMax 不是零) ,則複製到緩衝區的字元數 (,不包括終止的 Null 字元。
- 如果 cchBufferMax 為零) ,則 lpBuffer 指向字串資源中的字元數 (。 字串資源不保證在模組的資源數據表中以 Null 終止,而且您可以使用此值來判斷字串資源結束的位置。
- 如果字串資源不存在,則為零。
若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
如果您將 0 傳遞給 cchBufferMax ,以傳回 lpBuffer 參數中字串資源的唯讀指標,請使用傳回值中的字元數來判斷字串資源的長度。 字串資源不保證在模組的資源數據表中以 Null 終止。 不過,資源數據表可以包含 Null 字元。 字串資源會儲存在 16 個字串的區塊中,而區塊內的任何空白位置則以 Null 字元表示。
安全性備註
使用此函式不正確可能會危害應用程式的安全性。 不正確的使用方式包括指定 nBufferMax 參數中的錯誤大小。 例如,如果 lpBuffer 指向宣告為TCHAR szBuffer[100]
的緩衝區 szBuffer,則 sizeof (szBuffer) 提供位元組中的緩衝區大小,這可能會導致 Unicode 版本的函式緩衝區溢位。 緩衝區溢位情況是應用程式中許多安全性問題的原因。 在此情況下,使用 sizeof(szBuffer)/sizeof(TCHAR)
或 sizeof(szBuffer)/sizeof(szBuffer[0])
會提供緩衝區的適當大小。
範例
如需範例,請參閱 建立子視窗
注意
winuser.h 標頭會將 LoadString 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包括 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
另請參閱
概念
其他資源
參考