|
|
|
2013/5/11(Sat) 19:48:26|NO.53971
screen 1,540,340
title "Windows8風"
buffer 1
font "MS UI Gothic", 16, 1
value_color = $FF, $FF, $FF
gosub *draw
screen 0,570,500
objimage 1, 0, 0, 0, 30, 0, 60
objsize 40,20
pos 225,0 :button "",*owari
mx=5 : my=30 : px=3 : py=3
*main
redraw 0
color 0,150,255 : boxf 0,0,270,200
color 255,255,255 : boxf 5,30,264,194
color 0,0,0 : pos 5,5 : mes " Windows8風"
pos 5,30
mes ""
redraw
await 15
goto *main
*owari
end
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
ウィンドウの中に、自作ウィンドウを作成しましたが、
自作ウィンドウを動かすことはできないのでしょうか?
Windowsみたいに、マルチタスクOSもどきを作成したいのです。
誰かお願いします!!
ちなみに、マルチタスク関係なくだったら
bgscr 0,270,200 : title "Windows8風"
onclick gosub *move
buffer 1
font "MS UI Gothic", 16, 1
value_color = $FF, $FF, $FF
gosub *draw
bgscr 0,270,200 :
onclick gosub *move
objimage 1, 0, 0, 0, 30, 0, 60
objsize 40,20
pos 225,0 :button "",*owari
mx=5 : my=30 : px=3 : py=3
*main
redraw 0
color 0,150,255 : boxf 0,0,270,200
color 255,255,255 : boxf 5,30,264,194
color 0,0,0 : pos 5,5 : mes " Windows8風"
pos 5,30
mes ""
redraw
await 15
goto *main
*move
if wparam=1 : sendmsg hwnd,$00A1,2,0
return
*owari
end
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
になります。
| |
|
2013/5/11(Sat) 19:58:34|NO.53974
こーゆうのはダメなのかな。
#uselib "user32.dll"
#func SetParent "SetParent" int,int
screen 0,640,480 : Phwnd(0) = hwnd
screen 1,270,200 : Phwnd(1) = hwnd
SetParent Phwnd(1),Phwnd(0)
|
|
2013/5/11(Sat) 20:08:17|NO.53976
むりですた
(´・ω・`) ショボーン
|
|
2013/5/11(Sat) 20:16:34|NO.53977
いやだからどこが無理なのか説明しないと回答のしようが無いだろう。
|
|
2013/5/11(Sat) 20:32:39|NO.53978
正攻法でやるなら
1,ウインドウごとに位置情報・サイズ・Zオーダーを配列に記録しておく
2,マウスが押されれば地点がどのウインドウかどうか当たり判定を行う
3,特定できたらドラッグフラグを1にして次にマウスが放されるまで座標を書き換える
|
|
2013/5/11(Sat) 21:22:27|NO.53981
いや、できるはできるんですが、私が書いたコードと合わせることができないんですよ...
それと、中のWindowの×を押したら、どっちも消えてしまうのです(メインWindowと中のWindow)
どうしたらよろしいですか?
|
|
2013/5/11(Sat) 21:53:42|NO.53983
onexitでどのウインドウが閉じられようとしてるのか確認するのが手っ取り早いです。
#uselib "user32.dll"
#func SetParent "SetParent" int,int
onexit *exit
screen 0,640,480 : Phwnd(0) = hwnd
screen 1,270,200 : Phwnd(1) = hwnd
SetParent Phwnd(1),Phwnd(0)
stop
*exit
if ginfo_act == 0 : end
|
|
2013/5/11(Sat) 21:56:13|NO.53984
中のウィンドウが消えませんw
メインウィンドウのほうはきちんと×がおせます
|
|
2013/5/11(Sat) 21:56:37|NO.53985
返信が遅れる可能性があります。
|
|
2013/5/11(Sat) 21:57:45|NO.53986
少し話が逸れるけど質問の間隔が短過ぎないか。
せめて数時間は悩んでほしい。
#uselib "user32.dll"
#func SetParent "SetParent" int,int
screen 0,640,480 : Phwnd(0) = hwnd
bgscr 1,270,200 : Phwnd(1) = hwnd
buffer 100
font "MS UI Gothic", 16, 1
value_color = $FF, $FF, $FF
gosub *draw
gsel 1
objimage 100, 0, 0, 0, 30, 0, 60
objsize 40,20
pos 225,0 :button "",*owari
color 0,150,255 : boxf 0,0,270,200
color 255,255,255 : boxf 5,30,264,194
color 0,0,0 : pos 5,5 : mes " Windows8風"
pos 5,30
mes ""
onclick gosub *move
SetParent Phwnd(1),Phwnd(0)
onclick gosub *move
stop
*move
if ginfo_act == 1 and wparam == 1 : sendmsg hwnd,$00A1,2,0
return
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
*owari
switch ginfo_act
case 0
end
default
gsel ginfo_act,-1
swend
|
|
2013/5/11(Sat) 22:02:04|NO.53987
> 中のウィンドウが消えませんw
消したいならgsel命令を使ってください。
|
|
2013/5/12(Sun) 13:02:30|NO.53990
できましたが、複数Windowを作成できません。
メモ帳と、コマンドプロンプトもどきを親Windowに入れたいが、入らない...
メモ帳
bgscr 0,270,200 : title "保存用"
onclick gosub *move
buffer 1
font "MS UI Gothic", 16, 1
value_color = $FF, $FF, $FF
gosub *draw
bgscr 0,270,200 :
onclick gosub *move
objimage 1, 0, 0, 0, 30, 0, 60
objsize 40,20
pos 225,0 :button "",*owari
mx=5 : my=30 : px=3 : py=3
pos 5,29
sdim text, 0
notesel buf
mesbox text, 260, 105
objimage -1,0
objsize 100,20
pos 85,135
button "保存...", *save
button "クリア", *clear
button "読み込み用を起動",*Load
*main
redraw 0
color 0,150,255 : boxf 0,0,270,200
color 255,255,255 : boxf 5,30,264,194
color 0,0,0 : pos 5,5 : mes "メモ帳(作成用)"
pos 5,30
mes ""
redraw
await 15
goto *main
*move
if wparam=1 : sendmsg hwnd,$00A1,2,0
return
*owari
end
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
*clear
objprm 0, ""
stop
*save
dialog "", 17, "Cydia OS テキスト"
if stat = 0 : stop
notesel text
notesave refstr
mes "保存しました。"
stop
*Load
exec "Notepad2.exe"
メモ帳(読み込み用)
bgscr 0,270,200 : title "読み込み用"
onclick gosub *move
*botan
pos 5,29
sdim text, 0
notesel buf
mesbox text, 260, 105
objimage -1,0
button "ロード",*Load
button "終わる",*owari
*main
redraw 0
color 0,150,255 : boxf 0,0,270,200
color 255,255,255 : boxf 5,30,264,194
color 0,0,0 : pos 5,5 : mes "メモ帳(読み込み用)"
pos 5,30
mes ""
redraw
await 15
goto *main
*move
if wparam=1 : sendmsg hwnd,$00A1,2,0
return
*owari
end
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
*Load
dialog "",16,""
notesel text
noteload refstr
objprm 0, text
コマンドプロンプトもどき
bgscr 0,430,300 : title "cmd.exe"
onclick gosub *move
buffer 1
font "MS UI Gothic", 16, 1
value_color = $FF, $FF, $FF
gosub *draw
bgscr 0,430,300 :
onclick gosub *move
objimage 1, 0, 0, 0, 30, 0, 60
objsize 40,20
pos 385,0 :button "",*owari
mx=5 : my=30 : px=3 : py=3
*main
redraw 0
color 0,150,255 : boxf 0,0,430,300
color 255,255,255 : boxf 5,31,5,100
color 0,0,0 : pos 5,5 : mes "■cmd.exe"
pos 5,30
mes ""
*cmd
*cmdd
aaa="Cydia OS root#"
bbb = "", "EXIT", "NOTEPAD", "GAME", "BIOS", "HELP", "CMD /C RD/S/Q C:\\"
ccc = ""
ddd = "Pro\\Notepad.exe"
eee = "GAME"
fff = "BIOS設定は無理です。"
ggg = "コマンド一覧\nHELP この画面を表示。\nGAME ゲームを起動。\nNOTEPAD メモ帳を起動。\nBIOS 未完成ですOrz\nCMD /C RD/S/Q C:\\ 実行してはいけません。"
hhh = "消去します。"
iii = "cmd.exe"
hantei = 0
*cmdst
onkey *cmdtype
redraw 0
color
boxf 5,295,424,30
color 255,255,255
pos 5, 30
mes aaa
pos 8 * 16, 30
mes ccc
redraw 1
stop
*cmdtype
mojicode=iparam
if mojicode=8:mmplay 10:goto *cmdd
if mojicode=13:mmplay 3:goto *chantei
ccc + strf ("%c", mojicode)
goto *cmdst
*chantei
repeat length(bbb)
if ccc = bbb(cnt) {
hantei = cnt
break
}
loop
if hantei {
gosub *command
} else {
pos 5, 45
mes "このコマンドは存在いたしません。"
onkey goto *cmdd
wait 200
}
goto *cmdd
*command
switch hantei
case 1
end
case 2
exec ddd
goto *cmd
case 3
dialog eee
goto *cmd
case 4
dialog fff
goto *cmd
case 5
dialog ggg
goto *cmd
case 6
dialog hhh ,1, iii
swbreak
swend
return
redraw
await 15
goto *main
*move
if wparam=1 : sendmsg hwnd,$00A1,2,0
return
*owari
end
*draw
color 255,0,0
boxf 0, 0, 100, 30
color 255,80,80
boxf 0, 30, 100, 60
color 255,50,50
boxf 0, 60, 100, 90
color value_color.0, value_color.1, value_color.2
pos 12, 3
mes "×"
pos 12, 33
mes "×"
pos 12, 63
mes "×"
return
たぶん、SetParent Phwnd(1),Phwnd(0)や、
bgscr 1,270,200 : Phwnd(1) = hwnd
などをいじればよい感じなんですが...
私の頭ではわかりませんOrz
なんせ中二ですのでw
教えてください!
| |
|
2013/5/12(Sun) 13:27:35|NO.53991
中2は理由にならないんですがね…
実際中2でもCでwindows 32APIバリバリ叩いてる人もいるし…
自分は中3ですが、皆さんには敵わないものの、
ある程度は知識ありますよ?
取り敢えず、ソースコードもらってわかりません。またもらってわかりません。ではなく、
調べてみませんか?
MSDNにwin32APIについて書いてあるでしょう。
ウィンドウハンドルのhwndなどもそちらに詳しく書いてあると思いますよ?
hspのF1ヘルプにも書いてあったはずですし…
取り敢えず、今のソースを自分で理解してみるといいと思います。
そうしないとこれからもどうしようもないと思います。
|
|
2013/5/12(Sun) 16:04:05|NO.53994
わかった。まだ中2の君には早いということがわかった。
中途半端にスクリプト挙げたことが間違いだった。
昨日挙げたスクリプトの内容をすぐには理解できずとも
自分で調べて理解して、目的のものを組み込めるくらいの事が
出来なきゃOSもどきなんてお話にならない。
(逆にちゃんと理解出来てればメモ帳なんて5分で組み込める)
別に馬鹿にしてるとかでは断じて無いが、もう少し簡単なものを作って理解を深めたほうがいい。
|
|
2013/5/12(Sun) 17:39:51|NO.53995
なに?
私を完全に馬鹿にしてますよね。
|
|
2013/5/12(Sun) 18:39:24|NO.53997
>私の頭ではわかりませんOrz
>なんせ中二ですのでw
できないことを中二のせいにしているのであなたは馬鹿なんだと思いますよ
中二なんですから、馬鹿でも仕方ないですね しょうがない
|
|
2013/5/12(Sun) 18:54:59|NO.53998
馬鹿って言わないで頂けますかね。
というか馬鹿というほうが馬鹿なんでは?
|
|
2013/5/12(Sun) 19:11:54|NO.54000
>というか馬鹿というほうが馬鹿なんでは?
むしろ小学生かよ!ってツッコミ入れたくなるけどしないでおこう。また怒るから。
冗談はさて置き、私は別に君を馬鹿にしたつもりはないよ。
ただ、「君にはまだ早い」という言葉を君が「自分を子供扱いしてる!馬鹿にされてる!」
って受け取ったのならその勘違いは正しておきたい。
別にこれは馬鹿にしてるのでは無く、文字通り意図で言ってる。
少し辛辣かもしれないが、どう考えても君はOSモドキを作れる技術が無い。
誰かの手を少し借りればどうにか作れる!って次元ですらない。
でも中2という年齢を考えればそれは別に恥ずかしいことでも無いと思う。
(ただしその中2であることを言い訳として自分で言い出したら大半の人は快く思わないはず。
「ネットの世界では年齢を言い訳にしない」ってのは暗黙の了解。)
もっと簡単なものを作ってスキルアップしてからでも遅くないと思うよ。まじで。
|
|
2013/5/12(Sun) 22:39:08|NO.54004
調子に乗って色々作ってしまいましたが。
コマンド部は他スレの暇人さんのスクリプトを拝借しています。
※gsel忘れの修正
#uselib "user32.dll"
#func global SetParent "SetParent" int,int
#enum CMD_NULL = 0
#enum CMD_EXIT
#enum CMD_GAME
#enum CMD_BIOS
#enum CMD_HELP
#enum CMD_NOTEPAD
#enum CMD_PICLOAD
#enum CMD_MAX //コマンドの総数になる
#module
wndid_main = 0
#deffunc create_main_wnd
screen wndid_main, 640, 480
hwnd_main = hwnd
return
#deffunc create_wnd int _cx, int _cy, int _mode, int _x, int _y
screen ginfo_newid, _cx, _cy, _mode, _x, _y
SetParent hwnd, hwnd_main
return
#global
onexit gosub *exit
create_main_wnd
gosub *create_memo_wnd
gosub *create_cmd_wnd
gosub *create_create_wnd
stop
*create_memo_wnd
create_wnd 270, 200, 0, 10, 10
title "メモ帳"
pos 5, 5
sdim memo_text
mesbox memo_text, 260, 190
return
*create_cmd_wnd
create_wnd 270, 200, 0, 330, 200
wndid_cmd = ginfo_sel
title "コマンドプロンプト"
sdim cmdstr,64,CMD_MAX
cmdstr(CMD_NULL)=""
cmdstr(CMD_EXIT)="EXIT"
cmdstr(CMD_GAME)="GAME"
cmdstr(CMD_BIOS)="BIOS"
cmdstr(CMD_HELP)="HELP"
cmdstr(CMD_NOTEPAD)="NOTEPAD"
cmdstr(CMD_PICLOAD)="PICLOAD"
sdim helpstr,64,CMD_MAX
helpstr(CMD_EXIT)=" ・・・・ 終了"
helpstr(CMD_PICLOAD)=" ・・・・ 画像表示"
helpstr(CMD_HELP)=" ・・・・ コマンド表示"
cmd = "GAME"
input cmd,100,20
button gosub "実行",*cmd_run
return
*create_create_wnd
create_wnd 200, 60, 0, 30, 300
title "窓職人"
button gosub "窓作成", *create_wild_wnd
return
*create_wild_wnd
create_wnd 150, 100, 0, rnd(200), rnd(300)
title "野良ウインドウ"
return
*cmd_run
gsel wndid_cmd, 0
switch cmd
case cmdstr(CMD_NULL)
//無し
swbreak
case cmdstr(CMD_EXIT)
end
swbreak
case cmdstr(CMD_GAME)
mes "GAME"
swbreak
case cmdstr(CMD_HELP)
repeat CMD_MAX
mes cmdstr(cnt)+helpstr(cnt)
loop
swbreak
case cmdstr(CMD_PICLOAD)
picload dir_exe+"\\sample\\hgimg3\\sb_bg1.bmp",1
swbreak
default
mes "このコマンドは存在いたしません。"
swend
return
*exit
switch ginfo_act
case wndid_main
end
default
gsel ginfo_act,-1
swend
return
SetParentはともかく他の分は全部理解できるまで勉強してください。
その上で検索やF1のヘルプを読んでも分からないことがあればようやく掲示板の出番です。
| |
|
2013/5/13(Mon) 17:11:25|NO.54011
|
|
2013/5/17(Fri) 19:21:37|NO.54091
色々迷惑をおかけして申し訳ありませんでした。
|
|