FAQにしようかと思ったのですが、自分で考えたネタがほとんどなので自問自答と しました。近況などから掘り出したりもしています。
開発用Wikiの質問集も参考にしてください。
気分転換という説もあり。
$WM_MOUSEMOVE = 0x200
w.addEvent $WM_MOUSEMOVE
def w.msghandler(msg)
if msg.msg == $WM_MOUSEMOVE then
(process...)
end
end
よしだむ氏の
susie用拡張ライブラリが必要です。
SWin::Bitmap.createBitmap(*spi.getPicture(bitmapstring)).saveFile(filename)
などとすれば、ビットマップファイルとしてセーブできたりします。
spi=Susie::Plugin.new(spiname) content=open(filename).read $bmp=SWinBitmap.createBitmap(spi.getPicture(content))
アイドルループで、他のスレッドに処理を渡します。
ただし、スレッドの切り替えの起こりにくい処理を行わせると、大元のメッセージループ側が重くなってWindowsのメッセージに応答できません。適度にアイドルループ側に処理を戻してやって下さい。特に、cygwin1.dllが古いと、sleepでも固まるようです。
以下のようにすると、他のスレッドがアイドル時に走ります。
SWin::Application.messageloop do Thread.pass end
VRLocalScreen.addIdleproc Proc.new{ Thread.pass }
VRLocalScreen.messageloop
begin
VRLocalScreen.messageloop
rescue SWin::MsgloopInterrupt
(........)
end