マティさん、Tomorrowさん、返信ありがとうございます。
Tomorrowさんの教えてくれた方法でウインドウ左上のアイコンは綺麗に表示されるようになりました。
が、タスクトレイアイコンは潰れて汚いままです。
16x16アイコンだと確かにちゃんと表示されますが(それでもなぜかほんのちょっと汚くなる)
今度はエクスプローラーの縮小版で表示した時に拡大されるのでガタガタのアイコンになってしまうのです。
Win32プログラミング講座 ~ Step13ではアイコン2枚を組み合わせる事が書いてあるので、
32×32、16×16を組み合わせれば自動で選択、表示されるのかと思ったのですが、
そうではなく問題の解決には至りませんでした。
マティさん、すいません。私が説明不足でした。
アイコンが表示されてはいるのですが、私が描いた絵とは違う、潰れて
何がなんだか解らない絵になって表示されてしまうという事なのです。
不具合というのは、別プロジェクトで作ったソフトが、コードを何もいじってないのに
新バージョンでコンパイルすると上手く動作しなくなるのです。しかも何箇所も。
Ver4.11.01も2もそうなので様子見してるのです。まだバグ報告が出てるようなので3は試してません。
話し戻ってタスクトレイアイコンなのですが、NOTIFYICONDATA構造体等は以下の様になってます。
コード:
Dim TrayIcon As NOTIFYICONDATA 'トレイアイコンの情報を格納する構造体
Dim hIcon As DWord 'アイコンハンドル
hIcon = LoadIcon(CreateStruct.hInstance,IDI_ICON1) 'トレイアイコンのハンドルを取得
FillMemory(VarPtr(TrayIcon),Len(TrayIcon),0) 'NOTIFYICONDATA構造体の初期化
With TrayIcon
.cbSize = Len(TrayIcon) '構造体のサイズ
.hWnd = hMainWnd
.uID = 1
.uFlags = &H1 or &H2 or &H4
.uCallbackMessage = MSG_TRAYICON
.hIcon = hIcon
.lstrcpy(.szTip,"TrayIcon Test")
End With
で、この後、Shell_NotifyIconでタスクトレイアイコンを出したり消したりします。
SetClassLong(hMainWnd, GCL_HICONSM, NULL)の様に、SetClassLong(hIcon, GCL_HICONSM, NULL)にしたり、
.hIcon = GetClassLong(hMainWnd, GCL_HICON)にしたりすれば上手くいくかなと思ったのですがダメでした。
なので度々すいませんが、タスクトレイアイコンを綺麗に表示するにはどうすれば良いか教えてください。
長文失礼しました。