30日でできる!OS自作入門パート6(11日目)

11日目のサブタイトルは『ついにウインドウ』になります。といっても始めは恒例になってきたちょっとした改良からです。

相変わらずマウスが続きますが、今回の問題は画面端までマウスが隠れないというものです。試しにパソコンでこのブログを見ているかたがいましたらマウスを端までもっていってください。マウスが隠れたと思います。しかしハリボテOSではマウスが隠れず画面に残ったままです。

なぜこうなっているかというと、プログラム上で画面外に出たときにもきちんと表示されるよう制御している関数が書き換え直しているからですね。ということで範囲外にはみ出したら補正するようにソースを書いてこの問題は解決です。そこからちょこちょこ筆者の好みに合わせてプチ修正が入り、いよいよ本題のウインドウです。

ウインドウを出してみよう


早速表示するためのウインドウの絵を描きます。ウインドウ用の関数を作り、そこにソースを書いていきます。そしてその関数を呼び出せるようメインメソッドを修正して無事に表示されました。意外とあっさりです。

ちょっとここでまたしても問題が。どうもこのウインドウ、ちらちらしてしまいます。10日目の時にレイヤー構造で表示しているという話をしましたが、どうやら背景の範囲のレイヤーを描いてからウインドウを描くのが原因のようです(よくわかりませんが)。ということでまたしても修正です。

そんなこんなで直ったと思ったらマウスを重ねるとちらちらしたり、また直したと思ったら今度はマウスだけちらちらしたり色々試行錯誤を重ねて最終的にはちらちらしなくなりました。めでたしめでたしですね。

終わりに


マウスとウインドウと画面表示系の話が続いています。トライアンドエラーを繰り返しながら少しずつ進んでいますね。

何かを作っているとまぁいっかでなんとなく終わらせることもあるのですが(今回でいうと画面端でマウスが消えない問題とか)きちんと修正しているのでそういう姿勢は見習わなければいけないと思いました。

それにしても最近はあまり進んでいない気がするのですが、本当に30日である程度完成するのでしょうかね?

soon
  • soon
  • 1986年生まれのjavaプログラマー。28歳の時に7年働いた販売士からプログラマーに転職をする。常駐先を転々としながら日々生きています。