Giraffe+ 0.5.56.688

Downloadページへ

前リリースからの変化

  • Window.Activateを改善した
  • リストボックスのAutoResize前の描画を抑止した
  • Object.scopeの後処理を定義可能にした
  • object_tree.xmlのシノニムのconstnessが表示されてなかったのを修正
  • 古い変数の実装にスロットを使わないようにした
  • Struct_instance.newをクローン後の引数代入とした
  • XMessageBoxを1.9に更新した
  • WinUser/MBをDefault.giraffeでロードされるようにした

Window.Activateを改善した

最大化されつつ最小化してるウインドウにSW_RESTOREすると、初めの一回だけ最大化も解除されるのがWindowsの仕様みたいなので、それに対応しました。

リストボックスのAutoResize前の描画を抑止した

AutoResizeでリサイズされれば、また描画が発生しますから、大抵の場合、二度描画されていたようです。

Object.scopeの後処理を定義可能にした

二つ目の引数が後処理の定義になります。そのメソッドが取る引数は、一つ目の引数と同じく一つで、その値も同じく、scopeのselfです。
二つ目の引数に、デフォルトと同じことをする後処理をわざわざ指定すると下記のようになります。

Ifstream.new(file_name).scope& `f[
  //ファイル処理...
], `f[
  f.close
]

object_tree.xmlのシノニムのconstnessが表示されてなかったのを修正

今まで気付きませんでした。

古い変数の実装にスロットを使わないようにした

スロットを、使うときだけ生成するシステムにしたので、こうしたほうが効率的かと思ってやりましたが、メモリ使用量等、特に変化はありません。

Struct_instance.newをクローン後の引数代入とした

構造体にデフォルト値を設定できるようになりました。あと、継承関係を見直したので、Struct_instance.newの実行効率がよくなりました。
今までは、self.@type.newに引数を渡していました。そして、それが新たにStruct_instaceを生成してました。新たなStruct_instanceは新たなメソッドを持ちますから、newするたびにメソッドの生成をしていたことになります。
そしてもうひとつ、これでは構造体のデフォルト値が設定できません。C++には無い概念ですが、コンストラクタでそういうことをして使用することが前提の仕様(XMessageBoxがそう)の場合に困ります。
Struct_instance.cloneはselfの値を子にコピーします。しかしcloneは引数を取れません。そういうわけで、newを、cloneして得られたオブジェクトに引数を代入する、という仕様にしました。

pt: Struct.new2(Int :x Int :y)
pt.x.= 1
pt.y.= 2
pt2: pt.new(3)
pt2.x //3
pt2.y //2
pt3: pt2.new(4 5)
pt3.x //4
pt3.y //5
pt3.parent.=== pt2 //true

XMessageBoxを1.9に更新した

マルチスレッド時に問題があったそうなので更新しました。新機能にXMessageBox.giraffeも対応させました。MB_DONOTTELLAGAIN等のチェック時の値の保存はXMessageBox.iniにされます。
下記はVistaスタイルとMB_DONOTTELLAGAINを指定しています。

include('XMessageBox')
xp: XMSGBOXPARAMS.new
xp.lpszModule.= ('test'.c_str_w) //lpszModuleはLPCWSTR
xp.dwOptions.= (xp.VistaStyle)
msg('test' 'title' MB_DONOTTELLAGAIN 0 xp) //チェック後は表示されない

WinUser/MBをDefault.giraffeでロードされるようにした

settings.iniで定義したホットキーが他アプリ等に定義済みの場合にメッセージボックスを出して続行かどうか聞けるようにしてたんですが、MB_ICONERRORが未定義で結局エラーになってました。
そこらじゅうにrequire('WinUser/MB')があるので、設定によってロード済みだったりそうじゃなかったりになってたようです。
よく使うものなんだから、デフォルトでロードされてていいだろうと判断しました。