キャプチャしながら再生するプログラムの作成(3) – デリゲートに使用できる関数ポインタ

公開:2012-10-17 21:29
更新:2017-09-22 05:40
カテゴリ:winrt,c++/cx,desktop,windows,javascript,音楽・動画,audio,c++,windows api

DeviceWatcherのイベントにバインドするには、TypedEventHandlerにthisポインタとメンバ関数ポインタを引数にセットしてバインドすればいい。


watcher_ = DeviceInformation::CreateWatcher();
watcher_->Added += ref new TypedEventHandler<DeviceWatcher^,DeviceInformation^>(this,&wasapi_device_manager::added);

のだが、メンバ関数はref class/structのメンバでないといけないのである。ネイティブのclassメンバ関数をセットしたらコンパイラに怒られてしまった。

解決するにはネイティブのclassをref classに変えればいいのだけれど、ref classの使用は最小限に抑えたい。理由はあまりないけれど。なんかこうデリゲートからネイティブC++のメンバ関数に変換して呼び出すようなラッパーを作れないだろうか。作ってみようか。