2009年1月28日水曜日

boost::lambdaで引数なしのラムダ関数を作る

#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>

clsss DefineCleanup
{
public:
DefineCleanup(const boost::function<void()>& finalizer)
: finalizer_(finalizer) { assert(finalizer_); }
~DefineCleanup() { finalizer_(); }
private:
const boost::function<void()> finalizer_;
};

void test()
{
static bool someone_is_inside = false;
if(someone_is_inside){ return; }
someone_is_inside = true;
DefineCleanup set_guard_false_later(boost::lambda::var(someone_is_inside) = false);

// ....
}


これは再帰呼び出しを防ぐ例。
スレッドセーフじゃないとか問題はいろいろあるだろうけれど、そこは主題じゃないから無視。


AIRアプリのウィンドウを動かす方法+ウィンドウをリサイズする方法

systemChromeをnoneにして、半透明ウィンドウを作り、タイトルバーを自作するようなときに、ウィンドウを自力で動かす必要があるのだけれど・・・どうすればよい?

わかってみれば時間がもったいなかったなと思えるほど簡単。ウィンドウを動かすのは、
nativeWindow.startMove();
これだけ。

同様に必要になるであろうウィンドウのリサイズは
nativeWindow.startResize(NativeWindowResize.TOP);
これでできる。