キャプチャしながら再生するプログラムの作成(4) – イベント(デリゲート)をstd::functionに変換するラッパクラス

公開:2012-10-18 06:13
更新:2020-02-15 04:37
カテゴリ:winrt,c++/cx,desktop,windows,javascript,音楽・動画,audio,c++,windows api

イベント(デリゲート)をstd::functionに変換するラッパクラスを作ってみた。


   template <typename TSender,typename TResult>
   ref class typed_event_handler_wrapper 
  {
  internal:
      typedef std::function<void (TSender,TResult)> wrapped_method_type; 
      typed_event_handler_wrapper(wrapped_method_type wrapped_method)
          : wrapped_method_(wrapped_method) 
      {
          proxy_handler_ = 
              ref new  Windows::Foundation::TypedEventHandler<TSender, TResult>
                (this,&typed_event_handler_wrapper::proxy_handler);
      }

      void proxy_handler(TSender sender,TResult result)
      {
          wrapped_method_(sender,result);
      }

       Windows::Foundation::TypedEventHandler<TSender, TResult>^ get()
       {
           return proxy_handler_;
       }
  private:
      wrapped_method_type wrapped_method_;
      Windows::Foundation::TypedEventHandler<TSender, TResult>^ proxy_handler_;
  };

これから実際に使ってみる。