Code::Blocks エラー対処とデバッグ

津路です。
久しぶりに、Code::Blocksを触りました。

最初の投稿において、最後のところで、実行時のエラーについて書きました。

sizer.cpp にて assert エラー


Tracebackをクリックすると、エラー個所を特定できます。この場合、wx/common/sizer.h から呼ばれる DoInsertにおいて、assertエラーが発生しています。

assert エラーのtraceback

このエラーを解消するには、WX_EXPANDというプロパティコードを削除すればよいのですが、それでは、リソースでのEXPAND Enableを無視した形になりますので、リソース側でEXPANDプロパティのチェックを外すのが正当です。
しかし、外すとwidgetの横拡張ができなくなるので、本体のsizer.cppのBoxSizerに関するスコードを触るかです。
リソースを開くと、プログラムソースが自動的に編集状態となり、WX_EXPANDはOFFになりますので、BoxSizer内ではしないでほしいのでしょう。
と、考えていると、Expandプロパティの上に、Horizontal align, Vertical alignがあり、centerがあります。これらを、Left, Topに変更して保存、ビルド&実行すると、エラーが出なくなりました。

プロパティで, alignを編集

さて、実行して、FileメニューからOpenを選び、ファイルを開きますと、上のTextCtrlに内容を表示し、下のStaticTextにファイルのパスを表示しています。
ここで、下部のパス名部分が縦に半分を占めていて、横に縮小されています。

半分ずつ占有


これを解消するには、それぞれのwidgetのproportionを編集して、占有率を変える必要があります。
デフォルト値は1です。
この場合は、TextCtrlのproportionを5にしました。また、StaticTextのalignをleft, topにして、EXPANDを有効にしました。

Proportionを編集

実行しますと、おおよそうまく表示されました。

Proportion 5にして、StaticTextのEXPANDを有効にした結果

デバッグを実行してみました。FileメニューのOpenに割り当てたeventであるOnOpenに関しては、ブレークポイントへ飛んでは来ますが、wxCommandEventのデータも含め、一切見ることができず、しかもstep inなどの機能も利用できません。原因が不明です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください