2008年03月11日

Exif情報クラス

 今日はExif情報について、色んなソフトに使い回しが出来るように専用のクラスを作ろうと思い、仕様書とにらめっこをしていました。
 今ある「Exif読取り君」は独自の処理方法でやっているため使い回しがきかないし、拡張性もほとんど無いので、きちんとしたものを一度作っておけば今後のためにもいいので、「やらなければ」とずっと思っていました。
 しかし、これがなかなか難しくて、どういった仕様にするかを考えるだけで一向にいい案が出てきませんでした。orz
 結局今日は、新規のプロジェクトを作り、専用のクラスを追加したところでストップしました。

 次に、今作っている新作ソフトについて、テストを兼ねて少し本格的に使ってみました。
 一応メインになる処理部分は完成していて、後は細かい部分を調整するだけの状態なのですが、少し本格的に使ってみると、まだまだ改良したい部分が出てきました。
 このソフトは最初、比較的簡単にできると思い作成を始めたのですが、やり始めると「こんな機能も付けよう、あんなこともできるようにしよう」とどんどん欲が出てきて、かなり時間がかかりそうになってきました。
 しかし、今回の作成で新たに解ったことや、気付いたことなどが多いので、かなりスキルアップは出来るのではないかと思っています。

 次に、Visual Studio 2008を使い始めて気付いたことについて書いてみます。
 今回から本格的にWindows Vistaに対応できるようになっているな、と思います。
 宣言などの項目を見てみても、「#if _WIN32_WINNT >= 0x0600」というのが結構多く出てきます。
 この「0x0600」というのはWindows Vista以上で使える、という意味なのですが、2008からは新規のプロジェクトを作成すると、規定がこれになっていますからね。
 詳しくこの項目について見てみると、ほとんどGUI関係のものが多かったような気がします。
 VistaはGUIの違いが大きいので、当然と言えば当然かもしれませんね。
 その他にも、便利そうな新規らしきものもいくつかあったので、色々試してみたいと思います。
ランキングへ  posted by 遠雷 at 00:44 | コメント(0) | MFC

2008年03月08日

ツールバーの動作

 今日も新作ソフトの制作を少しやりました。

 この新作ソフトを作っていて、ある処理をするのに解らないことがあり、それを実現するために今までいろいろ調べたりしていたのですが、結局解らずそのままにしていてものがあったのですが、やっと今日その方法が解り、実装することが出来ました。

 こんな感じで結構解らないことがあり、その時はいくら調べたりいろいろ試してみてもうまくいかないのに、突然パッとひらめいて出来ることがあります。
 悩んでいる時は「なんでうまくできないんだろう?」と思い、かなりイヤになることもあるのですが、こうやって悩んだすえに出来た時はとてもうれしい気持ちになります。

 これがあるからプログラミングをやっている、といったら言い過ぎですが、この達成感はなかなかいいものです。
 マラソン選手が苦しい思いをして走るのは、ゴールしたときた時の達成感のため、というのに似ている気がします。

 ちなみに、今日できたことというのは、分割ウインドウを作り、その中のビューにツールバーを付け、そのツールバーのボタン上にマウスオーバーした時にツールチップを表示させ、メインフレームのステータスバーにも説明を表示させる、というものです。

 これは、分割ウインドウのビューをフレームにすれば比較的簡単にでき、実際自分でも実装して操作確認もしました。
 しかし、これをビューでやろうとするとなかなかうまくいかなかったのです。
 ツールチップを表示させるのは比較的簡単にできたのですが、ステータスバー(メインフレーム)にも表示させるのが少し難しかったです。
 今までは「別にステータスバーには表示されなくてもいいや」ということにしてやらなかったのですが、どうせなら表示させたいと思い、今回ずっと悩んでいました。

 単純にステータスバーに説明を表示させるのは比較的簡単にできるのですが、通常のソフトなどを見てもらえれば解るのですが、ボタン上からカーソルを外すとその説明は消えます。
 この消える処理が難しくずっと悩んでいた部分でした。

 結局、今日はメッセージをずっと監視しながら、どんなメッセージの時消える処理をしているか調べ、その結果やっと解ったのです。
 しかも、一度解ると他の処理ももっと簡単に処理できることが解り、一気に良くなりました。

 その処理方法を簡単に書いておきます。
 ウインドウメッセージの「WM_NOTIFY、TTN_NEEDTEXT」でツールチップの処理をし、「WM_SETMESSAGESTRING」でステータスバーに説明を表示させ、「WM_POPMESSAGESTRING」で表示したメッセージを消し、アイドル状態のメッセージを表示させる、という感じです。
 ちなみに、「afxpriv.h」をインクルードしないといけません。

 さらに、これらのメッセージで独自の処理をしてもよいのですが、簡単に済ませるためにメインウインドウへ「SendMessage」で引数をそのまま送ればそれだけで簡単にツールバーの動作が実現できます。

 今日はずいぶん長くなりましたが、これくらいにしたいと思います。
ランキングへ  posted by 遠雷 at 00:57 | コメント(0) | MFC