3

いくつかの拡張機能を追加するために、古い (Visual Studio 6.0) アプリケーションを Visual Studio 2012 に移植しています。リソース ビューのアプリケーションのアイコンには、32x32 4 ビット ビットマップと 16x16 4 ビット ビットマップの 2 つのバージョンのアイコンが表示されます。

メインの AppDlg.cpp には、次のように 2 つの呼び出しがありSetIcon()ます (既定では MFC アプリ ウィザードによって作成されます)。

SetIcon(m_hIcon, TRUE);         // Set big icon
SetIcon(m_hIcon, FALSE);        // Set small icon 

ただし、アプリケーションのダイアログ ウィンドウの左上隅に表示されるアイコンは、小さいアイコンではなく 16x16 に縮小された大きいアイコンです。システムトレイに表示されるアイコンでも発生しています。

Windowsのエクスプローラー(詳細表示・一覧表示)で見ると、実行ファイルは正しい小さい方を使っているようです。そのため、状況によっては小さいものを選んでいます。

ダイアログ ボックスとシステム トレイの左上隅に小さい 16x16 アイコンを選択させるにはどうすればよいですか?

4

1 に答える 1

2

マイクロソフトの既知のバグ。このディスカッションを参照してください。(読みたくない場合は、 SetIcon(m_hIcon, FALSE) 行をコメントアウトするだけで問題ありません)。SetIcon は、ダイアログのタイトル バー (小さいアイコン) にのみアイコンを設定し、Alt-tab (大きいアイコン) を使用する場合にのみ設定することに注意してください。

Windows エクスプローラーに表示されるアイコンは、メインのアプリケーション アイコン (rc ファイルで ID が最も小さいアイコン) です。メイン ダイアログの SetIcon() メソッドとは関係ありません。

システム トレイのアイコンはまったく別のものです。通常は、Shell_NotifyIcon API を使用してアイコンを設定しますが、プロジェクトにはアイコンを設定するヘルパー クラスが含まれているに違いありません。Chris Maunder による CSystemTrayは、多くのプログラマーが使用する人気のあるものです。プログラムで Shell_NotifyIcon を検索するだけで、システム トレイ アイコンに使用されているリソースを正確に確認できます。

于 2012-12-10T05:22:38.063 に答える