|
|
2011/1/24(Mon) 08:06:46|NO.36718
OSもどきを作りたいんですが、ロードっぽい画面(ゲージが徐々にたまっていくやつ)
ってどうすれば作れますか??
それと、デスクトップ画面で、例えば、「メモ」の画像をクリックしたら自作メモ起動としたいのですが、
デスクトップの画像の上にメモ帳のアイコンを読み込んだり、その画像をクリックする事でフラグに飛ばすっていうのをどうやって作
ればいいですか??
無知ですいません!
おねがいします!
|
|
2011/1/24(Mon) 10:40:01|NO.36719
1は、プログレスバーと言います。「HSP プログレスバー」で検索してください。
2は、「マウスがクリックされたか」と「マウスがアイコンに接触しているか」を判定するのが一番拡張性が高いのではないでしょうか。
プログレスバーも、アイコンのクリック判定も、
やり方はいくらでもあるので、それが自己解決できない内は擬似OSというのは少々ハードルが高いのではないでしょうか。
HSP標準命令では、フォルダの名前を変えたりフォルダごとコピー、移動、削除ができなかったり……
一気に作ろうとせず、完成度低くてもまずは完成させて、次はもっと完成度の高いものを作る。
ってやっていかないと、いつまでも完成しないジレンマに襲われますよ。
また守ることと戦うこと ジレンマは終わらない!!!
|
|
2011/1/25(Tue) 16:26:05|NO.36748
それなら、アイコンのx位置(左上と右下)とy位置(左上と右下)左上は
右下は変数で記憶させます
画像の表示している位置(画像を表示するときのPos)右下はxとyにアイコンの画像サイズ分、変数に足します。
onclickを使い、ラベルにジャンプして、マウスの位置がMouseXとMouseYと変数(xとy)を組み合わせて(if)
アイコンのある位置あったら、ラベルにジャンプ
でいいんじゃない?
僕も自作OS開発者なのでw
この方法はGUI(ウィンドウを操作して、動かす(例:Windows,Lihnux,MacOS))でも使えます。
ほかに聞きたいことがあれば、答えれる範囲で答えます(^o^)
|
|
2011/1/25(Tue) 16:30:21|NO.36749
ファイル(拡張子があるファイル)のコピーと移動と名前の変更ならあります。
コピーはコピーをする命令があったはず・・・(名前が思いつかない、削除も)
移動は、コピーしてから、元のファイルを削除
名前の変更はコピー先の名前を変更する名前にして、元のファイルを削除
|
|
2011/1/25(Tue) 19:51:52|NO.36753
疑似OSって流行ってるんでしょうか…最近作る人が増えてる気がします。
同志がいて嬉しいものです。
|
|
2011/1/26(Wed) 09:44:02|NO.36766
擬似OS、自作OSと呼ぶから嘲笑されるんだと思う。
Sub Operating Systemと叫べば援助の手が増えると思うよ。
|
|
2011/2/3(Thu) 17:30:13|NO.36872
//マクロとAPI呼び出し
#uselib "user32.dll"
#func SetWindowLong "SetWindowLongA" int,int,int
#func GetWindowLong "GetWindowLongA" int,int
#define PBS_MARQUEE 0x08
#define PBM_SETMARQUEE 0x040A
#define GWL_STYLE (-16)
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define PBM_SETRANGE 0x0401
#define PBM_SETPOS 0x0402
#define ctype MAKELPARAM(%1,%2) (%1 | %2<<16)
//プログレスバー設置
pos 5,5
winobj "msctls_progress32","",0,WS_CHILD | WS_VISIBLE,620,12
//プログレスバーのハンドルを取得
hProgress = objinfo(stat,2)
//プログレスバーの範囲を0〜100にする
sendmsg hProgress ,PBM_SETRANGE,0,MAKELPARAM(0,100)
//プログレスバーのスタイルにPBS_MARQUEE(0x040A)を追加
GetWindowLong hProgress , GWL_STYLE
SetWindowLong hProgress , GWL_STYLE ,stat | PBS_MARQUEE
//プログレスバーの状態を不確定型にする
sendmsg hProgress ,PBM_SETMARQUEE,1,2
//5秒待つ
await 5000
//プログレスバーの状態を確定型(通常の状態)にする
sendmsg hProgress ,PBM_SETMARQUEE,0,0
//プログレスバーのスタイルからPBS_MARQUEE(0x040A)を除く
GetWindowLong hProgress , GWL_STYLE
SetWindowLong hProgress , GWL_STYLE,stat ^PBS_MARQUEE
//プログレスバーの位置を100まで移動する
repeat 100,1
sendmsg hProgress ,PBM_SETPOS,cnt,0
await 99
loop
| |
|
2011/3/13(Sun) 20:18:36|NO.37574
あれ、質問者は?
|
|
2011/3/14(Mon) 03:35:43|NO.37583
……俺も自作cmd作成者だから言うことだが……
描画から全部自前でやれよ。
で、アプリケーションの仕組みも作って。
というよりCPUのエミュレータを作って、HSPでプログラムを記述できるようにして。
OSって、そうやって作るんだよ。
|
|
2011/3/14(Mon) 04:26:07|NO.37584
1.デバイスの作成
とりあえず、各機能をデバイスごとに割り振る。
ディスプレイ(描画)
割り込み感受(キーボード、マウス受け取り)
タイマ(マルチタスク化に必要。でもd3timerで事足りるかも)
2.IPL/OSの作成
別にブートセクタとかを頑張る必要はない。
だってそんなの決めているのは向こうの仕様だから。
大きいのを作ってもかまわない。
でも、全部作ると大きくなるから#includeとかを使うことを念頭において
ばらばらにして、APIで読み込むといい。
まず最初に行うのは、デバイスとの関係性の作成。
仕様にもよるけど、#moduleと*label@moduleで頑張るならそれでおkだけど、
共有メモリとマルチプロセスならちゃんとオブジェクトを作らなければならない。
……自作にこだわるといっても、配線とか思えばそれでおkだし。
それから、描画。
posとかlineで「直接」やってもいいけど、やるならとことんそれっぽく。
ディスプレイデバイスの描画メモリを作成して、そこにOSが書き込んでから、
ディスプレイデバイスが描画する。この場合は別に常時書き換えは要らないから、
通知を行って、それをもって再描画という形でもいいと思う。
もちろんこうなるから、文字描画も自前で。
で、割り込み機能を実装して、マウスとキーボードを感受できるようにして、
マウスカーソルの描画をする。PICの初期化とかはやりたければご自由に。
この際に必要なバッファとかは自分で考えろ。
こうなってくるとウィンドウがほしくなってくる。
その前にメモリ管理。でもこの場合はsdimとpeekをもってメモリを使って、
使い終わったらsdim var,1でいいと思う。
それで、ウィンドウの作成。
まず、重ねあわせ処理。
レイヤの概念が必要。1枚1枚のレイヤを大きさの情報を集約させて、
重ねあわせ処理を行う。
シート自体に描画されるものは別にメモリを確保してそこにためる。
ウィンドウの描画に成功したら、ボタンとかも作れるはず。
キー入力は本来バイナリで来るけど、デバイスのほうで調整しておkだと思う。
で、マルチタスク。
アプリケーションの概念を作って、OSの変数への代入を禁止して、
別途に動かす。
そこにタスクスイッチを持ってきて、複数アプリを動かせるようにする。
ここからは(というより、ここまで作れるなら)後は説明が要らないはず。
……悪ノリ&長文失礼。
| |
|
2011/3/14(Mon) 13:00:14|NO.37590
もっともらしい単語をつなげただけの支離滅裂な妄想。
|
|
2011/3/14(Mon) 17:49:07|NO.37595
せっかくOSもどきをつくるならフルスクリーンにしてみては
#Include "HSPDef.As"
DispY = Ginfo_DispY
DispX = Ginfo_DispX
ChgDisp 1,800,600
If Stat = 1 Or Stat = 2 {
Bgscr 0,DispX,DispY,1,0,0
Color 0,0,0 : Boxf
Color 255,255,255
Mouse -1
Mes "エラー"
Await 3000
End
} Else {
If Stat ! 0 {
Chgdisp 1,DispX,Dispy
Bgscr 0,DispX,DispY,1,0,0
Color 0,0,0 : Boxf
Color 255,255,255
Mouse -1
Mes "エラー"
Await 3000
End
}
}
Bgscr 0,800,600,1,0,0
Color 0,0,0 : Boxf
Color 255,255,255
Mouse -1
Mes "成功"
こんなもんかな
これ僕が書いたんじゃないけど(-_-;)
http://game948.blog67.fc2.com/blog-entry-75.html
ここを参考にしました
|
|
2011/3/23(Wed) 11:33:55|NO.37829
主こない・・・
|
|
2011/4/28(Thu) 07:30:53|NO.38754
主はなんで来ないんだよ・・・
|
|
2011/4/28(Thu) 09:26:16|NO.38759
|
|
2011/4/28(Thu) 16:12:07|NO.38763
Windows777などネ申すぎるわ
作れないな・・・
|
|
2011/4/28(Thu) 16:21:42|NO.38764
そうでもなくね?
『じゃあ作ってミロや』思われるのが落ちだと思うけど
|
|