字符串转换宏

这些宏提供字符串转换功能。

ATL 和 MFC 字符串转换宏

此处讨论的字符串转换宏对 ATL 和 MFC 都有效。 有关 MFC 字符串转换的详细信息,请参阅 TN059:使用 MFC MBCS/Unicode 转换宏MFC 宏和全局

DEVMODE 和 TEXTMETRIC 字符串转换宏

这些宏创建 DEVMODETEXTMETRIC 结构的副本,并将新结构中的字符串转换为新的字符串类型。 宏为新结构分配堆栈上的内存,并返回指向新结构的指针。

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)。

DEVMODETEXTMETRIC 字符串转换宏的行为取决于有效的编译器指令(如果有)。 如果源和目标类型相同,则不发生转换。 编译器指令更改 TOLE,如下所示:

有效的编译器指令 T 变为 OLE 变为
A W
_UNICODE W W
OLE2ANSI A A
_UNICODEOLE2ANSI W A

下表列出了 DEVMODETEXTMETRIC 字符串转换宏。

DEVMODE TEXTMETRIC
DEVMODEA2W TEXTMETRICA2W
DEVMODEOLE2T TEXTMETRICOLE2T
DEVMODET2OLE TEXTMETRICT2OLE
DEVMODEW2A TEXTMETRICW2A

另请参阅