MBCS文字列

MBCS(Multi-Byte Charactor Sets)では全て1文字で表現できるようになってます。
現在Windowsで使われるのはDBCS(Double-Byte)で、1文字2byteです。


ANSI文字列は全角文字(2byte)、半角文字(1byte)で構成されますが、
その半角文字を下位バイトに、0x00を上位バイトに配置すればDBCS文字列になります。
ANSI文字列と違って後ろから文字を辿ることができるのが楽ですね。


例えば、Win32API::GetGlyphOutlineの第2引数はMBCSを指定するようになっています。


DWORD GetGlyphOutline(
  HDC hdc,             // handle to device context
  UINT uChar,          // character to query
  UINT uFormat,        // format of data to return
  LPGLYPHMETRICS lpgm, // pointer to structure for metrics
  DWORD cbBuffer,      // size of buffer for data
  LPVOID lpvBuffer,    // pointer to buffer for data
  CONST MAT2 *lpmat2   // pointer to transformation matrix structure
);

UINTとなっていますが実際はDBCSなので上位ワードに0をいれるだけでokです。
(単にWORDからキャストするだけでも)