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

アーカイブの一覧に戻る
matsuo zmats****@gmail*****
2022年 6月 13日 (月) 00:54:35 JST


松尾です

 > - SetVTIconID() に WINAPI がありません。
 > つけたほうがよいと思われますが、いかがですか?
つけたほうがよさそうですね。
いれておきます 。

 > - ttpcmn.def ファイルへの記述

defファイルに書くほうが良いのかなという気になってきました。


NotifyMessage(W)() は変更ないので、defの内容はそのままにしておきました。
CreateNotifyIcon() 等は名前が変わったのでdefから削除しました。

新しく追加した(名前を変更した)関数は、
序数でGetProcAddress()してほしくないという気持ちで
defからなくしていました。

defからなくせば、Cソース内のみの修正となって
保守が楽だなと思っていました。

シンボルの前後に"_"と"@n"が追加されるのは
これは関数を呼び出せているのでokかなと思っていました。
インポートライブラリ(ttpcmn.lib)が
シンボル名の違いを吸収しているんだと思います。

GetProcAddress("関数名") ではなく、
GetProcAddress("_関数名@N") でないと
アドレスが引けなくなりそうです。
でもこういう使い方はしなくて、
プラグインはインポートライブラリ(ttpcmn.lib)
をリンクするのかなと思います。

# MinGWでリンク時に何か警告が出たりしていましたが
# 調査は後回しにしています


defに指定のないエクスポートしたシンボルの序数は
序数の未使用な値を小さい順で利用していくようですね。
(多分序数はDLL内のエクスポートシンボルリストのインデックスだと思います)
これが問題がありそうです。

削除した関数の序数を使っていない状態とするには
新しいシンボルを追加するとき
新しく採番してdefに書く必要があるのかもしれないです。
なかなか面倒ですね・・

何とか簡単にならないか調べてみます。



ttssh2-dev メーリングリストの案内
アーカイブの一覧に戻る