ll_libload imm, "imm32.dll"
ll_getproc ImmGetContext, "ImmGetContext", imm
ll_getproc ImmGetConversionStatus, "ImmGetConversionStatus", imm
ll_getproc ImmReleaseContext, "ImmReleaseContext", imm
ll_getproc ImmSetConversionStatus, "ImmSetConversionStatus", imm
ll_getproc ImmSetOpenStatus, "ImmSetOpenStatus", imm
#module
#deffunc initime
mref bmscr, 67
ll_callfunc bmscr.13, 1, ImmGetContext@ : ll_ret himc
return
#deffunc exitime onexit
if himc {
mref bmscr, 67
prm = bmscr.13, himc
ll_callfunc prm, 2, ImmReleaseContext@
}
return
#deffunc setimestat int
mref mode, 0
prm = himc, (mode ! 0)
ll_callfunc prm, 2, ImmSetOpenStatus@
return
#deffunc getimemode val, val
mref inputmode, 16 : mref changemode, 17
prm = himc
ll_getptr inputmode : ll_ret prm.1
ll_getptr changemode : ll_ret prm.2
ll_callfunc prm, 3, ImmGetConversionStatus@
return
#deffunc setimemode int, int
dim i, 2
getimemode i.0, i.1
mref inputmode, 0 : mref changemode, 1
prm.1 = (inputmode = -1) * i.0 + ((inputmode ! -1) * inputmode)
prm.2 = (changemode = -1) * i.1 + ((changemode ! -1) * changemode)
ll_callfunc prm, 3, ImmSetConversionStatus@
return
#global
initime
sdim txt, 16, 4
txt = "全角英数", "全角ひらがな", "半角カナ", "無変換"
repeat 4
pos 10, cnt * 40 + 10 : input txt.cnt, 100, 25
loop
*main
setimestat 1
objsel -1
selid = stat
switch selid
case 0: setimemode 0x0008 : swbreak
case 1: setimemode 0x0009 : swbreak
case 2: setimemode 0x0003 : swbreak
case 3: setimemode 0x0000 : swbreak
swend
repeat
wait 1
objsel -1
if selid ! stat : break
loop
goto *main
|