字符串转换宏
这些宏提供字符串转换功能。
ATL 和 MFC 字符串转换宏
此处讨论的字符串转换宏对 ATL 和 MFC 都有效。 有关 MFC 字符串转换的详细信息,请参阅 TN059:使用 MFC MBCS/Unicode 转换宏和 MFC 宏和全局。
DEVMODE 和 TEXTMETRIC 字符串转换宏
这些宏创建 DEVMODE 或 TEXTMETRIC 结构的副本,并将新结构中的字符串转换为新的字符串类型。 宏为新结构分配堆栈上的内存,并返回指向新结构的指针。
MACRONAME( address_of_structure )
备注
例如:
DEVMODEW* lpw = DEVMODEA2W(lpa);
and:
TEXTMETRICW* lptmw = TEXTMETRICA2W(lptma);
在宏名称中,源结构中的字符串类型在左边(例如 A),而目标结构中的字符串类型在右边(例如 W)。 A 代表 LPSTR,OLE 代表 LPOLESTR,T 代表 LPTSTR,W 代表 LPWSTR。
因此,DEVMODEA2W 将具有 LPSTR 字符串的 DEVMODE
结构复制到具有 LPWSTR 字符串的 DEVMODE
结构中,TEXTMETRICOLE2T 使用 LPOLESTR 字符串将具有 LPOLESTR 字符串的 TEXTMETRIC
结构复制到具有 LPTSTR 字符串的 TEXTMETRIC
结构中。
DEVMODE
结构中转换的两个字符串是设备名称 (dmDeviceName
),窗体名称 (dmFormName
)。 DEVMODE
字符串转换宏还会更新结构大小 (dmSize
)。
TEXTMETRIC
结构中转换的四个字符串是第一个字符 (tmFirstChar
)、最后一个字符 (tmLastChar
)、默认字符 (tmDefaultChar
) 以及断字符 (tmBreakChar
)。
DEVMODE
和 TEXTMETRIC
字符串转换宏的行为取决于有效的编译器指令(如果有)。 如果源和目标类型相同,则不发生转换。 编译器指令更改 T 和 OLE,如下所示:
有效的编译器指令 | T 变为 | OLE 变为 |
---|---|---|
无 | A | W |
_UNICODE | W | W |
OLE2ANSI | A | A |
_UNICODE 和 OLE2ANSI | W | A |
下表列出了 DEVMODE
和 TEXTMETRIC
字符串转换宏。
DEVMODE 宏 |
TEXTMETRIC 宏 |
---|---|
DEVMODEA2W | TEXTMETRICA2W |
DEVMODEOLE2T | TEXTMETRICOLE2T |
DEVMODET2OLE | TEXTMETRICT2OLE |
DEVMODEW2A | TEXTMETRICW2A |