Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than kernel32, prefix the name with the module name and a period.
LCMapString (kernel32)
.
Summary
TODO - a short description
Summary
C# Signature:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern int LCMapStringEx(
string lpLocaleName, // LPCWSTR lpLocaleName
uint dwMapFlags, // DWORD dwMapFlags
string lpSrcStr, // LPCWSTR lpSrcStr
int cchSrc, // int cchSrc
[Out]
IntPtr lpDestStr, // LPWSTR lpDestStr
int cchDest, // int cchDest
IntPtr lpVersionInformation, // LPNLSVERSIONINFO lpVersionInformation
IntPtr lpReserved, // LPVOID lpReserved
IntPtr sortHandle); // LPARAM sortHandle
VB Signature:
Declare Function LCMapStringEx Lib "kernel32.dll" (TODO) As TODO
User-Defined Types:
None.
[DllImport("kernel32.dll")]
static extern int LCMapString(uint Locale, uint dwMapFlags, string lpSrcStr,
int cchSrc, [Out] StringBuilder lpDestStr, int cchDest);
C# Signature:
[DllImport("Kernel32.dll")]
static extern int LCMapStringW(int Locale, uint dwMapFlags,
[MarshalAs(UnmanagedType.LPWStr)]string lpSrcStr, int cchSrc,
[MarshalAs(UnmanagedType.LPWStr)] string lpDestStr, int cchDest);
Alternative Managed API:
Do you know one? Please contribute it!
User-Defined Types:
None.
Notes:
if designed to run only on Windows Vista and later.
None.
lpVersionInformation must be null.
lpReserved must be null.
sortHandle must be zero.
Tips & Tricks:
Please add some!
Use LCMapStringEx instead
Sample Code:
public static string ToLower(string src)
{
string nResult = src;
int nLen, nSize;
uint dwMapFlags = LCMAP_LOWERCASE;
IntPtr ptr, pZero = IntPtr.Zero;
nLen = src.Length;
nSize = LCMapStringEx(LOCALE_NAME_SYSTEM_DEFAULT, dwMapFlags, src, nLen, IntPtr.Zero, 0, pZero, pZero, pZero);
if (nSize > 0)
{
nSize = nSize * sizeof(char);
ptr = Marshal.AllocHGlobal(nSize);
try
{
nSize = LCMapStringEx(LOCALE_NAME_SYSTEM_DEFAULT, dwMapFlags, src, nLen, ptr, nSize, pZero, pZero, pZero);
if (nSize > 0) nResult = Marshal.PtrToStringUni(ptr, nSize);
}
finally
{
Marshal.FreeHGlobal(ptr);
}
}
return nResult;
}
public static string MapChinese(string oriString, bool toSimpliedChinese)
{
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture;
uint mapFlag = (toSimpliedChinese ? LCMAP_SIMPLIFIED_CHINESE : LCMAP_TRADITIONAL_CHINESE);
Documentation
string retStr = new string(' ', oriString.Length);
LCMapStringW(ci.LCID, mapFlag, oriString, oriString.Length, retStr, retStr.Length);
return retStr;
}
Alternative Managed API:
Do you know one? Please contribute it!
Documentation
TODO - a short description
3/22/2023 12:19:37 PM - -217.149.162.225
TODO - a short description
12/6/2007 12:28:03 PM - anonymous
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).