3mile 发表于 2010-12-1 10:29:06

如何正确调用LCMapString?[已解决]

本帖最后由 3mile 于 2010-12-2 15:14 编辑

如题,调用LCMapString结果总为0?
我想应该是我调用语句有错吧,请大家指教。
#include <string.au3>
#include <array.au3>
#include <winapi.au3>

Local $sInputText = '中華人民共和國', $ab
;MsgBox(0, 0, _Big5toGbk($sInputText))
;MsgBox(0,0,_GbkToBig5('中华人民共和国'))

Func _Big5toGbk(ByRef $sInputText)
    $sInputText = _WinAPI_MultiByteToWideChar($sInputText, 950, $MB_COMPOSITE, False);转为繁体中文
    $sInputText = _WinAPI_WideCharToMultiByte($sInputText, 936);转为GBK繁体中文
    Return $sInputText
EndFunc   ;==>_Big5toGbk

Func _GbkToBig5($sInputText)
    $sInputText = _WinAPI_MultiByteToWideChar($sInputText, 936, $MB_COMPOSITE, False);转为繁体中文
    $sInputText = _WinAPI_WideCharToMultiByte($sInputText, 950);转为GBK繁体中文
    Return $sInputText
EndFunc


$InPtr = _WinAPI_MultiByteToWideChar($sInputText, 936, $MB_COMPOSITE, False)
MsgBox(0,DllStructGetSize($InPtr),DllStructGetData($InPtr,1))
$textbuf=DllStructCreate('WCHAR ')
$OutPtr=DllStructGetPtr($textbuf)
$WLC=_WinAPI_MAKELCID(_WinAPI_MAKELANGID(0x04,0x02), 0x03)
MsgBox(0,0,$WLC)
$result = DllCall("kernel32.dll", "none","LCMapStringW", "long", 0x0804, "long", 0x4000000, "PTR", _
                  $InPtr,"LONG",DllStructGetSize($InPtr), "PTR",$OutPtr,'INT',DllStructGetSize($InPtr)*2)
MsgBox(0,$result,DllStructGetData($OutPtr,1))

yarsye 发表于 2010-12-1 11:31:19

不会 帮顶 等待高手中的高手

3mile 发表于 2010-12-2 15:14:14

自我解决了。结贴
已经做成UDF,
http://www.autoitx.com/forum.php?mod=viewthread&tid=20140&fromuid=7639113
页: [1]
查看完整版本: 如何正确调用LCMapString?[已解决]