Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

This function maps one string to another, performing a specified transformation option.

Syntax

int FoldString(
  DWORD 
dwMapFlags, 
  LPCTSTR 
lpSrcStr, 
  int 
cchSrc, 
  LPTSTR 
lpDestStr, 
  int 
cchDest 
);

Parameters

dwMapFlags

[in] Value that specifies the type of transformation to be used during mapping. This value can be a combination of the following bit-flag constants. The following table shows the values this parameter can take.

Value Description

MAP_FOLDCZONE

Fold compatibility zone characters into standard Unicode equivalents. For information about compatibility zone characters, see the following Remarks section.

MAP_FOLDDIGITS

Map all digits to Unicode characters 0 through 9.

MAP_PRECOMPOSED

Map accented characters to precomposed characters, in which the accent and base character are combined into a single character value. This value cannot be combined with MAP_COMPOSITE.

MAP_COMPOSITE

Map accented characters to composite characters, in which the accent and base character are represented by two character values. This value cannot be combined with MAP_PRECOMPOSED.

MAP_EXPAND_LIGATURES

Not supported.

lpSrcStr

[in] Pointer to the string to be mapped.

cchSrc

[in] Size, in characters, of the lpSrcStrbuffer. If cchSrcis –1, lpSrcStris assumed to be null-terminated, and the length is calculated automatically.

lpDestStr

[out] Pointer to the buffer to store the mapped string.

cchDest

[in] Size, in characters, of the lpDestStrbuffer. If cchDestis zero, the function returns the number of bytes or characters required to hold the mapped string, and the buffer pointed to by lpDestStris not used.

Return Value

The number of bytes (ANSI version) or characters (Unicode version) written to the destination buffer, or, if the cchDestparameter is zero, the number of bytes or characters required to hold the mapped string indicates success. Zero indicates failure. To get extended error information, call the GetLastErrorfunction. The following table shows possible return values for the GetLastError function.

Value Description

ERROR_INSUFFICIENT_BUFFER

The data area passed to a system call is too small.

ERROR_INVALID_FLAGS

The flags are invalid.

ERROR_INVALID_PARAMETER

The parameter is incorrect.

Remarks

The mapped string is null-terminated if the source string is null-terminated.

The lpSrcStrand lpDestStrpointers must not be the same. If they are the same, the function fails and GetLastErrorreturns ERROR_INVALID_PARAMETER.

The compatibility zone in Unicode consists of characters in the range 0xF900 through 0xFFEF that are assigned to characters from other character-encoding standards but are actually variants of characters that are already in Unicode. The compatibility zone is used to support round-trip mapping to these standards. Applications can use the MAP_FOLDCZONE flag to avoid supporting the duplication of characters in the compatibility zone.

Requirements

Header winnls.h
Library Coreloc.lib
Windows Embedded CE Windows CE 1.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also