C++ Lambda


在改obs-text的時候,想到C++11有lambda,想用到Windows callback
語法上應該這樣改
::EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL
{
    TextSource* _TextSource = reinterpret_cast<TextSource *>(lParam);
    return !_TextSource->get_song_name(hwnd);
}
, reinterpret_cast<LPARAM>(this));

實際上會錯誤,去查了
http://en.cppreference.com/w/cpp/language/lambda

才知道lambda實際上是透過一個隱藏的class來實作的,所以會有一些限制
call convention會因為內容改變,用到class method就不行啦
不能轉成windows sdk要的 stdcall

留言

這個網誌中的熱門文章

OBS 抓不到畫面, 視窗, 遊戲擷取, 黑或白畫面, 當掉 ,卡住, black/white screen, window game capture, crash, freeze

優化實況(一) OBS設定 streaming settings

OBS plugin obs-text 顯示播放中音樂, display playing music