[ttssh2-dev 391] Re: DPIに合わせてアイコンを変更

Back to archive index
matsuo zmats****@gmail*****
2022年 5月 9日 (月) 23:56:35 JST


松尾です。

 > 気がついた点をお知らせします。
ありがとうございます。
解像度が変更できている、というところはよさそうですね。


アイコンリソースはプラグインが持っている(HINSTANCEがdllとexeで別になるはず)ので、
プラグインがLoadIconしてHICONを準備するのが妥当だと思います。
# アイコンハンドル(HICON)はプロセス内で共有できるはずなので
# ウィンドウへのセットなどはどちらでやってもよさそう。

今のところ、アイコンをロードして切り替えるタイミング、
プラグインに解像度が変わったこと、を伝える方法がありません。
どう実装したらよいか考え中です。

https://osdn.net/projects/ttssh2/ticket/43907
の指摘とおりですね。

 > (1) SSH 接続したときに、解像度に応じたサイズのアイコンがセットされない。
アイコンが設定できても、解像度が変化したときアイコンを再設定できない

 > (2) SSH 接続中に解像度を変更すると、Tera Term のアイコンになる。
いまは、解像度が変化したときttermpro.exe内のアイコンを再設定している。
なので、プラグインのアイコンではなくなってしまう。
ttermpro側でアイコンを設定しない仕組みが必要。


APIを2つ追加するのはどうだろうと考えています。
名前は仮です。

1) AddWMCallback(UINT msg, LRESULT (*callback)(UINT msg, WPARAM wp, 
LPARAM lp));
WM_DPICHANGED が発生したときに関数を呼び出してもらえるように
プライグイン側からリクエストを出せるようにする。
Windowsのメッセージでコールバックを発生できるので他の用途にも使えそう。
ちょっと危険なAPIかも。

2) UpdateIcon(BOOL enable)
引数がTRUEのとき、ttermpro.exeがアイコンを更新する
FALSEのとき、ttermpro.exeがアイコンを更新しなくなる。
大、小、通知の3つを個別にできるようにするか、まとめてにするか・・。

1があれば、キーを押すごとに効果音を再生するとか、
1+2でアイコンをチカチカ変更するプラグイン
など作れそうです。

まだαなのでとりあえず作って評価して
必要ならAPIを変更すればいいじゃないかと思いつつ、
最初からいい感じにして変更なしとしたいなぁと悩み中です。



ttssh2-dev メーリングリストの案内
Back to archive index