タスクトレイへのアニメーション


ゆうりん  2008-02-04 18:03:13  No: 67434  IP: 192.*.*.*

現在タスクトレイへアイコンを登録して最小化じにタスクトレイに向かって最小化される、といった機能を考えています。

OSはWinXPで、spy++でタスクトレイのアイコンが表示されている場所が「SysPager」というところが分かったとこまできました。(これは合ってますか?^^;

この「SysPager」を使って、どうやってタスクトレイの方に向かって最小化のアニメーション行えるのかが分かりません。

どういった関数でどう記述すればいいのか、是非ご教授願います。
宜しくお願い致します。

編集 削除
シャノン  2008-02-04 19:38:38  No: 67435  IP: 192.*.*.*

SysPagerは別に使わなくてもいいと思います。
アニメーションには AnimateWindow 関数を使います。

こんなサンプルがあります。
フラグをいろいろ変えて試してみてください。
http://www.kumei.ne.jp/c_lang/sdk4/sdk_348.htm

編集 削除
ゆうりん  2008-02-04 20:59:11  No: 67436  IP: 192.*.*.*

>シャノンさん
それって例えばタスクトレイが上にあっても、自分が関数に指定した場所に動いてしまいますよね?

タスクバーは移動が出来るので、タスクトレイがどこにあっても必ずタスクトレイに向かって最小化されるようにしたいんですが;

編集 削除
シャノン  2008-02-05 10:58:37  No: 67437  IP: 192.*.*.*

あぁ、なるほど。そこまで考えてなかった。
で、タスクトレイというか、タスクバーの位置を取得する望ましい方法は SHAppBarMessage 関数に ABM_GETTASKBARPOS を渡すことかなーと思います。
タスクトレイの名前が SysPager かどうかは OS のバージョン次第で変わるかもしれませんから。
SHAppBarMessage ではタスクトレイの位置は取得できませんが、タスクバーが画面のどこの辺にあるのかがわかれば、タスクトレイの位置はその端ということでいいでしょう。

編集 削除
safu  2008-02-05 15:25:59  No: 67438  IP: 192.*.*.*

タスクトレイのRectは
FindWindowEx で Shell_TrayWnd のハンドルをみつけて
それに対して更に FindWindowEx で TrayNotifyWnd をみつけて
Rectを取得するのではないでしょうか。

編集 削除
シャノン  2008-02-05 16:51:15  No: 67439  IP: 192.*.*.*

それでもたぶん大丈夫なんですが、クラス名がそうであることは公式に保証されていないんじゃないかと思います。
それしか方法が無いなら仕方ないですが、APIがあるんですから、APIを使っておいたほうがいいかなーと。

編集 削除
safu  2008-02-07 19:07:40  No: 67440  IP: 192.*.*.*

ところでAnimateWindowって
タスクバーに向かって最小化するような時に使えるのでしたでしょうか?

元質問者の方はタスクバーに向かって最小化するのではなく
タスクトレイに向かって最小化するコードを知りたいのでは?

AnimateWindowはウィンドウ枠が最小化時に移動するのとは異なり
MSメッセンジャーのログイン通知のような機能ではなかったですか?

編集 削除
瀬戸っぷ  2008-02-08 00:45:57  No: 67441  IP: 192.*.*.*

http://m--takahashi.com/bbs/pastlog/05400/05341.html

かなり、難しそう……ですね。
誰かがライブラリでも作って公開していれば別でしょうけど。

編集 削除
safu  2008-02-08 13:24:16  No: 67442  IP: 192.*.*.*

タスクトレイアイコンの位置はわかりそうですが
※以下参考
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200512/05120034.txt

そこまでに最小化タスクバーアイコンに格納されているのと
同じように、Windowが移動していく方法がわかりません。

私の知る限りは、NECのノートPCに付属している
バッテリー&CPU状態監視プログラムが
そのような動きをしていました。
本体のWindowと異なる透明の枠だけのウィンドウが
タスクトレイへ移動していくような動きでした。

編集 削除
シャノン  2008-02-08 13:44:40  No: 67443  IP: 192.*.*.*

> ところでAnimateWindowって
> タスクバーに向かって最小化するような時に使えるのでしたでしょうか?

ごめんなさい。使えませんでした。

> 誰かがライブラリでも作って公開していれば別でしょうけど。

…作るか。

編集 削除