板 1- 前 次 新 レス
旧雑記サルベージ
[99]管理人 ★:06/09/06 17:44 ID:???
2006年02月06日
■もこ窓(tomo.panicodeをAutoHotkeyでパクる
040.zip(lukewarm.s101.xrea
ウィンドウを縮小してしまう「もこ窓」のようなものをAutoHotkeyで実現する。
ウィンドウの描画に使っているデバイスコンテキストを取得し、リサイズしながらコピー描画する「StretchBlt」APIを実行すればいいはずなのだが、これだと他のウィンドウに隠れている部分などが正しく描画されない。
もこ窓のソースを見てみたところ、本来のウィンドウを非表示ではなく「完全に透明」にしていた。
試しに真似してみたところ、なぜかウィンドウが見えなくても全体の画像がコピーされた。
GetWindowDCの説明によると、ウィンドウの種類によって取得されるDCが違うらしい。
半透明の時は全体のバッファが格納されたDCが得られるのだろう。
DCへの直接描画は、そのままでは自動で再描画されないので、他のウィンドウに隠されたりすると、その部分が永久につぶれてしまう。
WM_PAINTメッセージをOnMessageで処理して自前で再描画するようにした。
対象ウィンドウのフィルタリングとかは面倒くさいので、このあいだの「タスクトレイに最小化」のようにタイトルバーのホイールクリックで縮小するようにした。
その気になれば縮小ウィンドウを自由にリサイズしたりすることも実現できるが、面倒なんでやめた。
前 次