現在タスクトレイへアイコンを登録して最小化じにタスクトレイに向かって最小化される、といった機能を考えています。
OSはWinXPで、spy++でタスクトレイのアイコンが表示されている場所が「SysPager」というところが分かったとこまできました。(これは合ってますか?^^;
この「SysPager」を使って、どうやってタスクトレイの方に向かって最小化のアニメーション行えるのかが分かりません。
どういった関数でどう記述すればいいのか、是非ご教授願います。
宜しくお願い致します。
SysPagerは別に使わなくてもいいと思います。
アニメーションには AnimateWindow 関数を使います。
こんなサンプルがあります。
フラグをいろいろ変えて試してみてください。
http://www.kumei.ne.jp/c_lang/sdk4/sdk_348.htm
>シャノンさん
それって例えばタスクトレイが上にあっても、自分が関数に指定した場所に動いてしまいますよね?
タスクバーは移動が出来るので、タスクトレイがどこにあっても必ずタスクトレイに向かって最小化されるようにしたいんですが;
あぁ、なるほど。そこまで考えてなかった。
で、タスクトレイというか、タスクバーの位置を取得する望ましい方法は SHAppBarMessage 関数に ABM_GETTASKBARPOS を渡すことかなーと思います。
タスクトレイの名前が SysPager かどうかは OS のバージョン次第で変わるかもしれませんから。
SHAppBarMessage ではタスクトレイの位置は取得できませんが、タスクバーが画面のどこの辺にあるのかがわかれば、タスクトレイの位置はその端ということでいいでしょう。
タスクトレイのRectは
FindWindowEx で Shell_TrayWnd のハンドルをみつけて
それに対して更に FindWindowEx で TrayNotifyWnd をみつけて
Rectを取得するのではないでしょうか。
それでもたぶん大丈夫なんですが、クラス名がそうであることは公式に保証されていないんじゃないかと思います。
それしか方法が無いなら仕方ないですが、APIがあるんですから、APIを使っておいたほうがいいかなーと。
ところでAnimateWindowって
タスクバーに向かって最小化するような時に使えるのでしたでしょうか?
元質問者の方はタスクバーに向かって最小化するのではなく
タスクトレイに向かって最小化するコードを知りたいのでは?
AnimateWindowはウィンドウ枠が最小化時に移動するのとは異なり
MSメッセンジャーのログイン通知のような機能ではなかったですか?
http://m--takahashi.com/bbs/pastlog/05400/05341.html
かなり、難しそう……ですね。
誰かがライブラリでも作って公開していれば別でしょうけど。
タスクトレイアイコンの位置はわかりそうですが
※以下参考
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200512/05120034.txt
そこまでに最小化タスクバーアイコンに格納されているのと
同じように、Windowが移動していく方法がわかりません。
私の知る限りは、NECのノートPCに付属している
バッテリー&CPU状態監視プログラムが
そのような動きをしていました。
本体のWindowと異なる透明の枠だけのウィンドウが
タスクトレイへ移動していくような動きでした。
> ところでAnimateWindowって
> タスクバーに向かって最小化するような時に使えるのでしたでしょうか?
ごめんなさい。使えませんでした。
> 誰かがライブラリでも作って公開していれば別でしょうけど。
…作るか。
ツイート | ![]() |