如何在Windows事件查看器中输出拉丁字符

时间:2014-05-14 14:30:21

标签: winapi visual-c++ event-viewer

我有一个服务应用程序,必须在Windows事件查看器中写入信息。碰巧它有一个西班牙语版本,需要在文本中有拉丁字符,所以当信息写入偶数查看器时,它显示不正确。我的.mc文件如下:

; // ***** log_messages.mc *****

; // This is the header.

MessageIdTypedef=DWORD

SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
Warning=0x2:STATUS_SEVERITY_WARNING
Error=0x3:STATUS_SEVERITY_ERROR
)

FacilityNames=(System=0x0:FACILITY_SYSTEM
Runtime=0x2:FACILITY_RUNTIME
Stubs=0x3:FACILITY_STUBS
Io=0x4:FACILITY_IO_ERROR_CODE
)

LanguageNames=(Spanish=0x0c0a:MSG00c0a)

; // The following are message definitions.

MessageId=0x1
Severity=Informational
Facility=Runtime
SymbolicName=MSG_INFO
Language=Spanish
Información: %1
.

MessageId=0x2
Severity=Warning
Facility=Runtime
SymbolicName=MSG_WARNING
Language=Spanish
Precaución: %1
.

MessageId=0x3
Severity=Error
Facility=Runtime
SymbolicName=MSG_ERROR
Language=Spanish
Error: %1
.

显示信息时,例如信息事件,拉丁字符显示不正确:

enter image description here

如果有人遇到过这个问题,可以帮助我,谢谢。

1 个答案:

答案 0 :(得分:1)

所以我解决了,问题是在使用mc.exe生成.h和.rc文件时我使用了这个参数:

mc -U mymcfile.mc

考虑到输出应该在Windows中以Unicode字符集设置,但是mc工具将输入作为ANSI,所以我添加了一个参数:

mc -u -U mymcfile.mc

起初它返回了一个错误,因为该文件是ANSI,但是我把它转换为UNICODE,之后它工作正常。希望这可以帮助别人......