ぜんぜんとり終わらないw。
documentのなかにあるページでは足りないのですよ。
あ、ちなみに環境はこうです。
wxMac on Mac OS X 10.5.2
wx.PlatfromInfo =
('__WXMAC__',
'wxMac',
'unicode',
'wx-assertions-on',
'SWIG-1.3.29',
'mac-cg',
'mac-native-tb')
Yakumo:~ nori$ uname -a
Darwin Yakumo 9.2.2 Darwin Kernel Version 9.2.2: Tue Mar 4 21:17:34 PST 2008; root:xnu-1228.4.31~1/RELEASE_I386 i386
wxGTK on Centos5.1
wx.PlatfromInfo
('__WXGTK__', 'wxGTK', 'unicode', 'gtk2', 'wx-assertions-on', 'SWIG-1.3.29')
[nori@Asama]~% uname -a
Linux Asama 2.6.18-53.1.4-eth-3w-dvd #5 SMP Fri Dec 21 19:15:40 JST 2007 x86_64 x86_64 x86_64 GNU/Linux
どう調べたか?
appleのドキュメント、Carbonのevent loopがRunApplicationEventLoopをgoogleすると引っかかる。
で、CarbonのAPIを呼ぶこととwxEventLoopActivatorをスタック上に生成する以外はwxGUIEventLoop::Run()の中でやっていないので、wxEventLoopActivatorを探してみたがいまいち役に立たず。
たぶんこれが本質。MacのDoRedrawはなにものか?
PlatformのPaintHanderを呼び出すコード。OnPaintがOverrideされなかった場合に実行される。あまり重要でない。
mappingをしている本体。case kEventControlDrawの部分を読み解けばCarbon Macのdraw要求がwxのPaintにどう変換されるわかるはず。この関数はDoRedrawをgrepして発見。
あとはCarbonのAPIリファレンスかなんかを拾ってきてkEventControlDrawが飛んでくる条件がわかればよさげ。
Carbon Event Manager Reference @ developer.apple.com、これですな。
kEventControlDraw
Sent when your control should draw itself. The event can optionally contain parameters indicating which port to draw into and which part to constrain drawing to. (Mac OS X only)
Available in Mac OS X v10.0 and later.
Declared in CarbonEvents.h
だそうだ。
HIViewも理解しないといけない。まあタスクレベルに落ちたのでハッピーですね。GTKでも同じ作業すれば終わり。まあソースでの位置を探すのは簡単だが。
0 件のコメント:
コメントを投稿