Carbon+Quartzで、ウインドウの大きさの変更できるようになりました。

ウインドウの大きさを変えるイベント

http://www.ottimo.co.jp/koike/MacOSX/MacOSX_text_01/01_04_23.html
http://msyk.net/mdonline/msgbox/oneissue_477.html

まず、イベント kEventWindowBoundsChangedを捕まえることができるようにします。。。

おそらく、このときに、縦横比を一定に保つなどの処理をするんだと思います。
(まだ、実装していませんが。。)

HIViewの描画ハンドラの中

まず、ウインドウの大きさを取得
GetWindowPortBounds(myMainWindow,&portRect);


HIView の大きさを変更
HIViewGetFrame ((HIViewRef) userData, &bounds);
bounds.size.width = w; bounds.size.height = h;
HIViewSetFrame ((HIViewRef) userData, &bounds);


ウインドウにbltする関数に、先ほどの大きさを渡す。
status= HIViewDrawCGImage( myContext, &bounds, srcImage);


これで、ウインドウを大きくしたり、小さくすることによって、中身も連動して、大きくなったり、小さくなりました。。


それにしても、HIRectと、Rect は、似ているのに、片方は、座標だったり、片方は、横幅と、縦幅だったりしますよね。。
いちいち変換しないといけません。

http://www.ottimo.co.jp/koike/MacOSX/MacOSX_text_01/01_04_23.html
http://developer.apple.com/jp/technotes/tn2074.html


[追記]

しかし、Core2duo 2.0GHzで、拡大すると、重くなってしまい、Z80 CPUの処理がのろのろになってしまうようですね。。Σ(゚д゚lll)ガーン


やはり、OpenGLとかで、テクスチャに貼り付けて、やらないといけないのでしょうか。。。
むーん。。