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
留言
張貼留言