正确使用Windows控制台API的CHAR_INFO结构

时间:2016-08-16 11:48:25

标签: c++ c windows unicode console

控制台功能wincon.h的Windows API部件定义了一个数据结构CHAR_INFO,如下所示:

typedef struct _CHAR_INFO {
    union {
        WCHAR UnicodeChar;
        CHAR AsciiChar;
    } Char;
    WORD Attributes;
} CHAR_INFO, *PCHAR_INFO;

所以我们有一个8位和16位字符的并集,分别表示ASCII和Unicode字符。通常,如果您必须处理C中的联合,则您已标记了联合,即存在一个额外字段,指示正在使用哪个联合字段。这不是这种情况(Attributes用于不同的东西),所以我想知道如何正确使用这种数据类型的值。

如果我们看看API的哪些功能实际上使用了这个或类似的结构,我们发现它仅由存在于两个变体中的函数使用:后缀为A(对于ASCII变体),或者后缀为W(对于Unicode变体)。

因此,可以假设这些函数的A变体仅使用此结构的AsciiChar字段,而W变体仅使用UnicodeChar字段?如果没有,您如何知道实际使用的字段以及如何将一个字段转换为另一个字段? MSDN documentation似乎没有说明正确用法。

0 个答案:

没有答案