Установка значка другой панели задач на значок, отображаемый в заголовке (С#)?
У меня есть и темные, и светлые версии значка моего приложения; темная версия лучше всего работает на серой поверхности, такой как панель задач Windows XP, где лучшая версия лучше всего работает как значок в заголовке.
Есть ли способ установить значок на панели задач на другой значок, чем тот, который используется в моей форме на С# (P/Invoke - это нормально)?
Ответы
Ответ 1
Отправьте сообщение WM_SETICON в вашу форму с разными значками для параметров ICON_SMALL и ICON_BIG:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam);
private const uint WM_SETICON = 0x80u;
private const int ICON_SMALL = 0;
private const int ICON_BIG = 1;
public MyForm()
{
InitializeComponent();
SendMessage(this.Handle, WM_SETICON, ICON_SMALL, Properties.Resources.IconSmall.Handle);
SendMessage(this.Handle, WM_SETICON, ICON_BIG, Properties.Resources.IconBig.Handle);
}
Ответ 2
Я знаю, что это старый вопрос, но я столкнулся с ним, пытаясь добиться того же, и, ну да, вы можете это сделать, по крайней мере, на Windows 7/8.
Оказывается, ICO файл не просто содержит одно изображение, он содержит 9 разных изображений с 9 различными разрешениями:
- 16х16
- 24х24
- 32х32
- 48х48
- 64х64
- 72x72
- 80х80
- 96x96
- 128x128
В Windows 7 и 8 изображение 64x64 используется на панели задач, а изображение 16x16 используется на значке, который помещается в верхний левый угол вашей формы.
Вы можете использовать инструмент, например Greenfish Icon Editor Pro (я не работаю для них или чего-то еще, это не плагин!), чтобы иметь эти два отдельных изображения, а затем добавить этот файл *.ico
как обычно в форму Windows Form/WPF в Visual Studio.
Конечный результат показан ниже:
![WPF]()
Как вы можете видеть, мое приложение WPF имеет два отдельных значка: один на панели задач и другой в форме.