ラッパライブラリの改良 – イベントハンドラは結局LRESULTで返すことにした

公開:2012-01-23 17:00
更新:2020-02-15 04:37
カテゴリ:c++,dawもどきの作成,windows api,windows,audio

イベントハンドラの戻り値は結局LRESULTで統一することにした。WNDPROCもDLGPROCも。boolで返すのはやめにした。メッセージによっては真偽の2値以外の値を返す必要があるので。



 template <typename ProcType = WNDPROC>
  struct base_win32_window : public base_window 
  {
    typedef ProcType proc_t;
    .
    .(中略)
    .
        virtual LRESULT other_window_proc(HWND hwnd,uint32_t message, WPARAM wParam, LPARAM lParam)
    {
      return def_wnd_proc<ProcType>(hwnd,message,wParam,lParam);
    };

    // デフォルトウィンドウメッセージハンドラ
    virtual LRESULT on_nccreate(CREATESTRUCT *p) { return std::is_same<proc_t,WNDPROC>::value?1:FALSE;}
    virtual LRESULT on_create(CREATESTRUCT *p) { return std::is_same<proc_t,WNDPROC>::value?0:FALSE;}
    virtual LRESULT on_init_dialog(HWND default_focus_ctrl,LPARAM data) {return TRUE;}
    virtual LRESULT on_size(uint32_t flag,uint32_t width,uint32_t height) {return std::is_same<proc_t,WNDPROC>::value?0:FALSE;}
      .
      .(後略)

デフォルトウィンドウメッセージハンドラのデフォルトの戻り値はWNDPROCとDLGPROCで異なるので、std::is_sameを使っている。