前に「OSもどきのアイコン機能を実装」について質問させていただいているのですが、
http://hsp.tv/play/pforum.php?mode=all&num=76403
あれからいろいろと改造を施して、進化させたのですが意味不明なエラーが連発し、
頭がオワタ\(^o^)/しそうになったので質問させていただきます
以下のソースコードの208行目で「パラメータの値が異常です」と言われるので
ソースコードの修正をお願いします
#include"user32.as"
//パレットデータ 画像座標
// 0 ,50 スタートボタン(通常時)
// 50 ,50 スタートボタン(プッシュ中)
// 110,60 音楽ファイルアイコン
// 160,60 画像ファイルアイコン
// 210,60 ドキュメントアイコン
// 260,60 フォルダアイコン
// 310,60 終了操作アイコン
iconmax=5:dir_def=dir_cur
iconx=12,12,12,12,12
icony=5,60,60*2,60*3,60*4
iconname(0)=sysinfo(1)
iconname(1)="デバイス"
iconname(2)="アシスタント"
iconname(3)="ツール"
iconname(4)="終了操作"
ShortcutMenu="新規作成"
ShortcutMenuHot="開く","新規作成","削除","情報表示"
buffer 1:picload"Picture/Palette.png",0
buffer 2,ginfo(20),ginfo(21)
color 0,0,200:boxf
picload"Picture/Wallpaper/Harmony.png"
gzoom ginfo(20),ginfo(21),2,0,0,ginfo(12),ginfo(13),1
screen 0,ginfo(20),ginfo(21),0,0,0
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat | $10000 | $40000
width dispx,dispy
sendmsg hwnd, $112, $F030
notesel iconmax
noteload"Registry/IconMAX.registry",-1
iconmax=int(iconmax)
notesel iconname_load
noteload"Registry/IconNAME.registry",-1
repeat iconmax
noteget iconname(cnt),cnt
loop
notesel iconpath_load
noteload"Registry/IconPATH.registry",-1
repeat iconmax
noteget iconpath(cnt),cnt
loop
repeat iconmax
iconpath(cnt)=int(iconpath(cnt))
loop
notesel iconlink_load
noteload"Registry/IconLINK.registry",-1
repeat iconmax
noteget shortcuticon(cnt),cnt
loop
onclick gosub*desktop_move
scrx=ginfo(12):scry=ginfo(13)
repeat iconmax
iconname_length(cnt)=strlen(iconname(cnt))
if iconname_length(cnt)>8 {
iconname_cnt=cnt
iconname_two(cnt)="":iconname_one(cnt)=""
iconname_one(cnt)=strmid(iconname(cnt),0,8)
iconname_two(cnt)+strmid(iconname(cnt),0,16)
iconname_two_et(cnt)=strmid(iconname(cnt),0,8)
strrep iconname_two(cnt),""+iconname_two_et(cnt),""
iconname_strlen(cnt)=(strlen(iconname_two(cnt))*6)
iconname_path(cnt)="&SYSTEM"
iconname(cnt)=""+iconname_one(cnt)+"\n"+iconname_two(cnt)+"..."
}
loop
gosub*desktop_draw
repeat
if scrx!ginfo(12)|scry!ginfo(13) {
x=ginfo(12):y=ginfo(13)
buffer 2,ginfo(20),ginfo(21)
color 0,0,200:boxf
picload"Picture/Wallpaper/Harmony.png",0
gzoom x,y,2,0,0,ginfo(12),ginfo(13),1
gsel 0,0
gosub*desktop_draw
}
wait 20
loop
stop
*desktop_draw
redraw 0
gmode 0,ginfo(12),ginfo(13)
pos 0,0:gcopy 2,0,0,ginfo(12),ginfo(13)
gmode 3,ginfo(12),50,175
pos 0,ginfo(13)-50:gcopy 1,0,0,ginfo(12),50
gmode 0,ginfo(12),ginfo(13)
repeat iconmax
if iconx(cnt)!-1&icony(cnt)!-1 {
pos iconx(cnt),icony(cnt):gcopy 1,260,60,32,32
if cnt==4 :pos iconx(cnt),icony(cnt):gcopy 1,310,60,32,32
if cnt>4 {
if iconpath(cnt+1)==0 :pos iconx(cnt),icony(cnt):gcopy 1,110,60,32,32
if iconpath(cnt+1)==1 :pos iconx(cnt),icony(cnt):gcopy 1,160,60,32,32
if iconpath(cnt+1)==2 :pos iconx(cnt),icony(cnt):gcopy 1,210,60,32,32
}
color 255,255,255:font"MS UI GOTHIC",12
pos iconx(cnt)-5,icony(cnt)+34:mes iconname(cnt)
}
loop
redraw 1
return
*desktop_move
defdx=mousex:defdy=mousey
if wparam==1 {
newdraw=1
clrobj:gosub*desktop_draw
repeat iconmax
if mousex>iconx(cnt)&mousex<iconx(cnt)+32&mousey>icony(cnt)&mousey<icony(cnt)+32 {
iconID=cnt
repeat
defx=mousex:defy=mousey
iconx(iconID)=defx-16:icony(iconID)=defy-16
gosub*desktop_draw
await 1
getkey click,1
if click==0 :break
loop
}
loop
}
if wparam==2 {
clrobj:gosub*desktop_draw
repeat iconmax
if mousex>iconx(cnt)&mousex<iconx(cnt)+32&mousey>icony(cnt)&mousey<icony(cnt)+32 :MouseIconHot=1:iconno=cnt
loop
if MouseIconHot==0 {
gradf mousex,mousey,100,length(ShortcutMenu)*30,1,$FFFFFF,$000000
objsize 100,30:pos mousex,mousey
foreach ShortcutMenu
button gosub""+ShortcutMenu(cnt),*ShortcutRun
loop
}
if MouseIconHot==1 {
gradf mousex,mousey,100,length(ShortcutMenu)*30,1,$FFFFFF,$000000
objsize 100,30:pos mousex,mousey
foreach ShortcutMenuHot
button gosub""+ShortcutMenuHot(cnt),*ShortcutRunHot
loop
}
MouseIconHot=0
}
return
*ShortcutRun
if stat==0 :gosub*IconCreate
return
*ShortcutRunHot
if stat==0 :gosub*IconRun
if stat==1 :gosub*IconCreate
if stat==2 :gosub*IconDelete
if stat==3 :gosub*IconInfo
return
*IconRun
if iconno==4 :end
repeat setcnt
if iconno==cnt+5 :exec""+shortcuticon(cnt),16
loop
clrobj:gosub*desktop_draw
return
*IconDelete
iconx(iconno)=-1:icony(iconno)=-1
clrobj:gosub*desktop_draw
return
*IconCreate
dialog"",16,""
if stat==0 :return
selected=refstr
iconx(5+setcnt)=mousex:icony(5+setcnt)=mousey:iconmax+1
iconname(setcnt+5)=getpath(selected,8)
shortcuticon(setcnt)=refstr:setcnt+1
iconname_length(4+setcnt)=strlen(iconname(4+setcnt))
;iconpath(5+setcnt)=getpath(selected,2)
;strrep iconpath(5+setcnt),".",""
chdir dir_def
notesel audiopath
noteload"Config/FILETYPE_AUDIO.ini",-1
repeat notemax
noteget type,cnt
type=getpath(type,16)
if getpath(selected,2)=="."+type :iconpath(5+setcnt)=0
loop
notesel picturepath
noteload"Config/FILETYPE_PICTURE.ini",-1
repeat notemax
noteget type,cnt
type=getpath(type,16)
if getpath(selected,2)=="."+type :iconpath(5+setcnt)=1
loop
notesel textpath
noteload"Config/FILETYPE_TEXT.ini",-1
repeat notemax
noteget type,cnt
type=getpath(type,16)
if getpath(selected,2)=="."+type :iconpath(5+setcnt)=2
loop
if iconname_length(4+setcnt)>8 {
iconname_cnt=cnt
repeat iconmax
iconname_two(cnt)=str(iconname_two(cnt))
iconname_two_et(cnt)=str(iconname_two_et(cnt))
iconname_one(cnt)=str(iconname_one(cnt))
loop
iconname_two(cnt)=""
iconname_one(cnt)=""
iconname_one(cnt)=strmid(iconname(cnt),0,8)
iconname_two(cnt)+strmid(iconname(cnt),0,16)
iconname_two_et(cnt)=strmid(iconname(cnt),0,8)
strrep iconname_two(cnt),""+iconname_two_et(cnt),""
iconname_strlen(cnt)=(strlen(iconname_two(cnt))*6)
iconname_path(cnt)="&SYSTEM"
iconname(cnt)=""+iconname_one(cnt)+"\n"+iconname_two(cnt)+"..."
}
clrobj:gosub*desktop_draw
return
*IconInfo
repeat iconmax
if mousex>iconx(cnt)&mousex<iconx(cnt)+32&mousey>icony(cnt)&mousey<icony(cnt)+32 :iconno=cnt
loop
if iconno<6 {
if iconno==0 :exec dirinfo($10005),16,"properties"
if iconno==1 :exec""+dir_win+"\\explorer.exe /e, /root,/select,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
if iconno==2 :exec"Saltice Personal Assistant System SASAKI.exe"
if iconno==3 :dialog"Salticeで利用されるツールを実行できます",0,"プロパティ"
if iconno==4 :dialog"このアイコンはSalticeを安全に終了できます",0,"プロパティ"
}
repeat setcnt
if iconno==cnt+5 :exec""+shortcuticon(cnt),16,"properties"
loop
clrobj:gosub*desktop_draw
return
*Quit
repeat int(iconmax)
iconmax(cnt)=str(iconmax(cnt))
loop
notesel iconmax
notesave"Registry/IconMAX.registry"
notesel iconname_save
repeat int(iconmax)
iconname_save+""+iconname(cnt)+"\n"
loop
notesave"Registry/IconNAME.registry"
notesel iconpath_save
repeat int(iconmax)
iconpath_save+""+str(iconpath(cnt))+"\n"
loop
notesave"Registry/IconPATH.registry"
notesel iconlink
repeat int(iconmax)
iconlink+""+shortcuticon(cnt)+"\n"
loop
notesave"Registry/IconLINK.registry"
end