ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
12月 14 (金曜日) 2007
17:37
扉を開いて
 
そーいえば、ウィンドゥの扱いがちょっと変化したのでapi_openwin関数をちょっと改良しないといけないなぁ・・・

えっと。現在は

  • EDX = 5
  • EBX = ウィンドゥのバッファ
  • ESI = ウィンドゥのX方向の大きさ
  • EDI = ウィンドゥのY方向の大きさ
  • EAX = 透明色
  • ECX = ウィンドゥの名前

・・・ふむ・・・こんな感じだよね?
う〜む・・・レジスタが足りない・・・
おっし。じゃ、EBPを属性として、ビットごとにっていうことにしよっか。(つーかそれしかないでしょこれじゃ)

  • EDX = 5
  • EBX = ウィンドゥのバッファ
  • ESI = ウィンドゥのX方向の大きさ
  • EDI = ウィンドゥのY方向の大きさ
  • EAX = 透明色
  • ECX = ウィンドゥの名前
  • EBP = ウィンドゥの属性


  • bit0: 0ならウィンドウじゃない。1ならウィンドゥ
  • bit1: 0ならタイトルバーを持たない。
  • bit2: 0ならフレームを持たない。
  • bit3: 0ならフットバーを持たない。
  • bit4: 0なら固定ウィンンドゥ。1なら可変
  • bit5: 以下リザーブ(将来のために)

・・・こんなところかな・・・
おぉ! リザーブだって! なんかカコイイ!!  ←バカ

・・・あ"〜・・・そっかぁ。バッファの扱いかぁ・・・・
現在の状況だと、新しいmake_window関数はシステムとしてバッファのメモリを確保しちゃうんだ。
こりゃまずいよなぁ。アプリはあくまでもアプリ用のメモリ内でバッファを確保せんといかんわけで・・・
うーん・・・どーしよう・・・・



 
30日を過ぎたBlogにはコメントできません。
11:32
なんぴとたりとも俺の前を走らせねぇ
 
田んぼチャージャー・・・・ (ボソっ)

えっとぉ〜。ちょーっと問題が出てしまったでゴンス。

今のBBLはシートの重ね順がはりぼてと違う(つーか、追加されてる)
そのための除外処理が甘かったようだなぁ。


sht_mouse ←なにがどうなっても最上位にいないといけない
sht_menu ←なにがどうなってもこの位置に
sht_tbar ← 〃

さまざまなシート

sht_back ←なにがどうなっても最下位にいないといけない

しかし、今の状態だと新しいアプリを起動したりした時(新しいシートというかウィンドゥが加わった時)この順列が狂ってしまう。
bballがsht_menuの上に来たりしてはいけないのでする!

えーっと・・・そうなると・・・

まず、はりぼてだと、構造体SHTCTL内に256個のsheets・sheets0があるよね。
shtctl_initで初期値を設定している。256個のsheets0に「未使用だよ」とマークし、さらにtopを-1としている。これがシートが一枚もないという状態。
sheet_allocで未使用のsheets0を探して使用中だよとマークして確保する。
しかしまだこの状態だと、この確保したsheets0の高さは-1。つまり非表示の状態。それだけしかやっていない。裏を返すと使用中にシートが何枚あろうと、表示していない限りはtopは-1のまんま。
出来上がったsiheets0を、sheet_updown関数に通すことで始めて表示が行われる。sheet_updown関数は高さの変更だけではなく、表示・非表示の制御も行っているのだ。
top変数もまた、この関数内で制御される。

・・・っということは・・・・・
マウスやメニュー等、一度設定したらもう二度と高さが変更されないシート。これらが設定される前と後でtop変数の扱いを変えたらどうだろう??


・・・いや。これはこれで。
それより、アプリ関係(つまりシステム以外)のウィンドゥの高さを専門にあつかう関数を新設してみた。どんなもんじゃろ・・・?

リビジョン114
 
30日を過ぎたBlogにはコメントできません。
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.