1

'1' 使用两个字节 20 和 0;'2' 使用两个字节 21 和 0;

'a' 使用两个字节 68 和 0;'b' 使用两个字节 69 和 0;

我从 GDI32.dll(windowsapi) 挂钩 func ExtTextOutW ,并从 str(unsigned char); 读取 比如 abc123... 而得到:68 0 69 0 70 0 20 0 21 0...;

BOOL ExtTextOutW
 (
  HDC         hdc,
  INT         x,
  INT         y,
  UINT        flags,
  const RECT* lprect,
  LPCWSTR     str,
  UINT        count,
  const INT*  lpDx
 )
4

1 回答 1

2

当标志=0x10;

lpString 数组是指从 GetCharacterPlacement 返回的数组,应该由 GDI 直接解析,因为不需要进一步的语言特定处理。字形索引仅适用于 TrueType 字体,但该标志可用于位图和矢量字体,以指示不需要进一步的语言处理,GDI 应直接处理字符串。请注意,所有字形索引都是 16 位值,即使字符串被假定为光栅字体的 8 位值数组。对于 ExtTextOutW,字形索引保存到元文件中。但是,要显示正确的字符,必须使用相同的字体播放图元文件。对于 ExtTextOutA,不保存字形索引。

于 2020-01-22T14:12:15.293 回答