由于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函数用法相关的资料。

posted on 2011-09-08 16:34  玛瑙河  阅读(729)  评论(0编辑  收藏  举报