HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0511
Cydia.hatena自作ウィンドウを作成しましたが...20解決


Cydia.hatena

リンク

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)



Cydia.hatena

リンク

2013/5/11(Sat) 20:08:17|NO.53976

むりですた
(´・ω・`) ショボーン



てれてれ

リンク

2013/5/11(Sat) 20:16:34|NO.53977

いやだからどこが無理なのか説明しないと回答のしようが無いだろう。



ht.

リンク

2013/5/11(Sat) 20:32:39|NO.53978

正攻法でやるなら
1,ウインドウごとに位置情報・サイズ・Zオーダーを配列に記録しておく
2,マウスが押されれば地点がどのウインドウかどうか当たり判定を行う
3,特定できたらドラッグフラグを1にして次にマウスが放されるまで座標を書き換える



Cydia.hatena

リンク

2013/5/11(Sat) 21:22:27|NO.53981

いや、できるはできるんですが、私が書いたコードと合わせることができないんですよ...
それと、中のWindowの×を押したら、どっちも消えてしまうのです(メインWindowと中のWindow)
どうしたらよろしいですか?



ht.

リンク

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



Cydia.hatena

リンク

2013/5/11(Sat) 21:56:13|NO.53984

中のウィンドウが消えませんw
メインウィンドウのほうはきちんと×がおせます



Cydia.hatena

リンク

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



ht.

リンク

2013/5/11(Sat) 22:02:04|NO.53987

> 中のウィンドウが消えませんw
消したいならgsel命令を使ってください。



Cydia.hatena

リンク

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分で組み込める)

別に馬鹿にしてるとかでは断じて無いが、もう少し簡単なものを作って理解を深めたほうがいい。



Cydia.hatena

リンク

2013/5/12(Sun) 17:39:51|NO.53995

なに?
私を完全に馬鹿にしてますよね。



kanahiron

リンク

2013/5/12(Sun) 18:39:24|NO.53997

>私の頭ではわかりませんOrz
>なんせ中二ですのでw

できないことを中二のせいにしているのであなたは馬鹿なんだと思いますよ
中二なんですから、馬鹿でも仕方ないですね しょうがない



Cydia.hatena

リンク

2013/5/12(Sun) 18:54:59|NO.53998

馬鹿って言わないで頂けますかね。
というか馬鹿というほうが馬鹿なんでは?



てれてれ

リンク

2013/5/12(Sun) 19:11:54|NO.54000

>というか馬鹿というほうが馬鹿なんでは?
むしろ小学生かよ!ってツッコミ入れたくなるけどしないでおこう。また怒るから。

冗談はさて置き、私は別に君を馬鹿にしたつもりはないよ。
ただ、「君にはまだ早い」という言葉を君が「自分を子供扱いしてる!馬鹿にされてる!」
って受け取ったのならその勘違いは正しておきたい。

別にこれは馬鹿にしてるのでは無く、文字通り意図で言ってる。
少し辛辣かもしれないが、どう考えても君はOSモドキを作れる技術が無い。
誰かの手を少し借りればどうにか作れる!って次元ですらない。

でも中2という年齢を考えればそれは別に恥ずかしいことでも無いと思う。
(ただしその中2であることを言い訳として自分で言い出したら大半の人は快く思わないはず。
「ネットの世界では年齢を言い訳にしない」ってのは暗黙の了解。)

もっと簡単なものを作ってスキルアップしてからでも遅くないと思うよ。まじで。



ht.

リンク

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のヘルプを読んでも分からないことがあればようやく掲示板の出番です。



Cydia.hatena

リンク

2013/5/13(Mon) 17:11:25|NO.54011

                 



Cydia.hatena

リンク

2013/5/17(Fri) 19:21:37|NO.54091

色々迷惑をおかけして申し訳ありませんでした。



ONION software Copyright 1997-2023(c) All rights reserved.