kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

C++のラムダがCのコールバックにつかえる

ためしにやったら動いた。さすがC++

#include <Windows.h>
#include <iostream>

int main() {
  HWINSTA sta = GetProcessWindowStation();

  EnumDesktops(
    sta,
    [](LPTSTR desktop, LPARAM lp)->BOOL {
      std::cout << desktop << std::endl;
      return TRUE;
    },
    0);
}

Win32は列挙系でコールバックを使うことが多いので、シンプルに書けてすごく助かる。

#include <Windows.h>
#include <iostream>

int main() {
  EnumDisplayMonitors(
    NULL,
    NULL,
    [](HMONITOR mon, HDC dc, LPRECT rc, LPARAM lp)->BOOL {
      std::cout << rc->left << ", " << rc->top << ", " <<
        rc->right << ", " << rc->bottom << std::endl;
      return TRUE;
    },
    0
    );
}