由于MASM32中Dialog.inc文件中ustring宏有问题,导致用对话框相关的宏显示含有中文的对话框时出问题。原代码如下所示:
; ------------------------------------------------
; write unicode string at current location in EDI
; ------------------------------------------------
ustring MACRO quoted_text
LOCAL asc_txt
.data
asc_txt db quoted_text,0
.code
invoke MultiByteToWideChar,CP_ACP,MB_PRECOMPOSED,
ADDR asc_txt,-1,edi,LENGTHOF asc_txt
add edi, LENGTHOF asc_txt*2
ENDM
修改为以下后正常:
; ------------------------------------------------
; write unicode string at current location in EDI
; ------------------------------------------------
ustring MACRO quoted_text
LOCAL asc_txt,dwMinSize
.data
asc_txt db quoted_text,0
dwMinSize dd 0
.code
invoke MultiByteToWideChar,CP_ACP,0, ADDR asc_txt,-1,0,0
mov dwMinSize,eax
invoke MultiByteToWideChar,CP_ACP,MB_PRECOMPOSED, ADDR asc_txt,-1,edi,dwMinSize
add edi, dwMinSize
add edi, dwMinSize
ENDM
原理参见MSDN库中关于MultiByteToWideChar函数用法相关的资料。
浙公网安备 33010602011771号