メモ:

  • wxc関連
    • wxPoint と wxSize の実装が無い
      • あとで('A`) (いらないかも)
    • delete してる部分で null チェックしてないので怖い
      • 全部書き換えた
  • wxD関連
    • void* wxColour_CreateFromStock(int id) が _Createナントカ と引数情報同じでコンストラクタが衝突した
      • static wxColour CreateFromStock(int id) とした
    • _Delete というメンバ関数があって困る
      • てきとうに回避
    • きちんと指定のクラスのデストラクタ呼ばないと不正な処理で死ぬ。しかし、デストラクタ呼ぶラッパが無い奴が多すぎる
      • がんばるがんばらない

てきとうすぎ。ところで、デフォルト引数なんて使っていいのかな。gdc ってバージョンいくつの dmd がベースなんだ…。

void 初期化() {
  wxMenuBar menubar = new wxMenuBar;
  ...
  frame.SetMenuBar(menubar);
}

とかやって、menubarが生きてけるスコープを抜けると、デストラクタで C++ の方の wxMenuBar のインスタンスを delete しちゃうことにいまさら気づいた。いちいちクラスのメンバ変数にするのは面倒だよねえ。wxWidgetsの動作についてすごい勘違いしてそうなのでソース読もう…。

wxWidgets は、マクロでごにょごにょしすぎで、Dで再現しづらいのが辛い。


追記:
on_
wxc になぜ delete のラッパが無いのか納得。wxWidgets が最期まで面倒見てくれるのか…。

    if ( m_frameMenuBar )
    {
        delete m_frameMenuBar;
        m_frameMenuBar = (wxMenuBar *) NULL;
    }

しっかり delete してくれてる。なるほどなるほど。