次バージョン予告:周波数グラフのスナップショット2008年01月25日 23:50

周波数グラフスナップショット
 http://cessna373.asablo.jp/blog/2008/01/19/2567108
では、二つのデータを直接比較する方法はないと書きましたが、ふと思い立って周波数グラフのスナップショット機能を作ってみました。
案外うまく動いているようなので、次バージョンに入れたいと思います。

これは、現在表示されている周波数グラフのスナップショットを取って、周波数グラフの背景に表示する機能です。
周波数グラフのコンテキストメニュー [スナップショットの表示] で現在のグラフを背景に表示し、[スナップショットのクリア] で背景に表示しているものをクリアします。

上図で薄い線で描かれているのがスナップショットです。
ちょっと見にくいかな。色については、要望があれば修正します。
これで、二つのデータの解析結果を一目で比較することができます。

実装の都合上、以下の制限があります。
 - スナップショットを取ったデータの周波数範囲より表示範囲を広くすると、スナップショットは表示されない。
  (8000Hz のデータで取ったスナップショットを 44100Hz のデータで表示する場合、表示範囲の最大値を 4000Hz 以下にしなければならない)
 - 周波数グラフの表示モードを変更すると、スナップショットがクリアされる。
  (表示モードについては、オプションの [周波数グラフ] 参照)

ウィンドウサイズ変更グリッパー2008年01月25日 23:52

サイズ変更グリッパー
プログラマ向けの話題です。

サイズ変更グリッパーというのは、ウィンドウの右下にある、サイズ変更のためにドラッグできる一角のことです(上図)。
サイズボックスというのが正式名称なのかな。

これは、スクロールバーに SBS_SIZEBOX スタイル(ウィンドウスタイル)を設定することにより作成できます。
また、ステータスバーに SBARS_SIZEGRIP スタイル(ステータスバースタイル)を設定すると、グリッパー付きのステータスバーになります。

今まで後者の方法しか知らなくて、サイズ変更グリッパーを付けるために、無意味にステータスバーを追加したりしていました。
何かしらのステータスが表示されるわけなので、まったく意味がないわけではありませんが、不要なところは削ってしまった方がすっきりします。
というわけで、次バージョンではいくつかのダイアログからステータスバーを削除する予定です。

前者の方法に気付いたのは、WTL
 http://sourceforge.net/projects/wtl
の、CDialogResize のソースコードを見ていたときです。
これは、ダイアログの大きさを変更したときに、コントロールの位置や大きさを調節するためのクラスです。
ちなみに、RH1FFT では WTL を使っていません。MFC をスタティックリンクしています。
CDialogResize 相当の処理も、自前で行っています。

改めてファイル選択ダイアログなどを Spy++
 http://msdn2.microsoft.com/en-us/library/aa264396(VS.60).aspx
で見てみると、確かにスクロールバーですね。
もっと早く気付いていれば良かったんですが。