共用方式為


SetLocaleInfoA 函式 (winnls.h)

設定使用者覆寫目前地區設定部分的信息專案。 此函式不會設定系統預設值。

注意 因為此函式會修改所有應用程式的值,所以應該只由控制面板的區域和語言選項功能或類似的公用程式呼叫。 如果對系統參數進行國際變更,呼叫端應用程式必須廣播 WM_SETTINGCHANGE 訊息,以避免在其他應用程式中造成不穩定。
 

語法

BOOL SetLocaleInfoA(
  [in] LCID   Locale,
  [in] LCTYPE LCType,
  [in] LPCSTR lpLCData
);

參數

[in] Locale

針對函式的 ANSI 版本,地區設定標識子,以及解譯 lpLCData 資訊時所使用的代碼頁。 若為 Unicode 版本,則會忽略此參數。

您可以使用 MAKELCID 巨集來建立地區設定識別碼,或使用下列其中一個預先定義的值。

也支援下列自定義地區設定標識碼。

[in] LCType

要設定的地區設定信息類型。 如需有效的常數,請參閱 Locale Information Constants的 GetLocaleInfo、GetLocaleInfoEx 和 SetLocaleInfo 的 LCType 參數一節。 應用程式每個呼叫只能指定一個值,但它可以使用二進位 OR 運算符來結合 LOCALE_USE_CP_ACP 與任何其他常數。

[in] lpLCData

包含要設定的地區設定資訊的 Null 終止字串指標。 信息必須是指定常數位有的格式。 應用程式會針對函式的 Unicode 版本使用 Unicode 字串,以及 ANSI 版本的 ANSI 字串。

傳回值

如果成功,則傳回非零值,否則傳回 0。 若要取得擴充的錯誤資訊,應用程式可以呼叫 getLastError,以傳回下列其中一個錯誤碼:

  • ERROR_ACCESS_DISABLED_BY_POLICY。 計算機或使用者的組策略已禁止這項作業。
  • ERROR_INVALID_ACCESS。 存取碼無效。
  • ERROR_INVALID_FLAGS。 為旗標的值無效。
  • ERROR_INVALID_PARAMETER。 任何參數值都無效。

言論

此函式會寫入登錄,其中會設定與特定使用者建立關聯的值,而不是特定應用程式。 這些登錄值會影響使用者所執行之其他應用程式的行為。 依規則,只有在用戶明確要求變更時,應用程式才應該呼叫此函式。 為了方便使用單一應用程式,不應變更登錄設定。

針對 LCType 參數,應用程式應該將 LOCALE_USE_CP_ACP 設定為使用操作系統 ANSI 代碼頁,而不是用於字串轉譯的地區設定代碼頁。

當此函式的 ANSI 版本搭配僅限 Unicode 的地區設定識別碼使用時,函式可能會成功,因為操作系統會使用系統代碼頁。 不過,系統代碼頁中未定義的字元會以問號 (?) 的形式出現在字串中。

從 Windows Vista 起,LOCALE_SDATELOCALE_STIME 常數已經過時。 請勿使用這些常數。 請改用 LOCALE_SSHORTDATELOCALE_STIMEFORMAT。 自定義地區設定在日期或時間格式內可能沒有單一統一的分隔符:例如,例如,“12/31, 2006” 或 “03:56'23” 的格式可能有效。

注意

winnls.h 標頭會將 SetLocaleInfo 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winnls.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetLocaleInfo

國家語言支援

國家語言支援函式