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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2022-03-05
  • 2021-06-25
猜你喜欢
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2021-06-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案