Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дополнения к шагам 107 и 108 / Комментарии к статьям / Разное
Дополнения к шагам 107 и 108.
У получившейся программы есть два забавных побочных эффекта:
Если нажать кнопку SysTray, и сразу после этого завершить
нажатием "OK" или "Escape", иконка не всегда исчезает из SysTray !
Почему иногда иконка исчезает, а иногда нет - непонятно.
Но, если перегрузить функцию DestroyWindow() (при помощи хотя бы того же ClassWizard) и вписать в код всего одну строчку:
,то программа, закрываясь, сама будет тушить свою иконку
(например, имитируя нажатие кнопки "Remove" перед закрытием).
Если после запуска программы, не нажав "SysTray", сразу
нажать "Hide", то диалоговое окно исчезнет, а иконка не появится.
И щелкать мышью больше некуда, чтобы вернуть диалоговое окно.
Простейший, наверное, способ эту неприятность исправить
следующий:
Т.е. прежде чем прятать окошко, имитируем нажатие кнопки
"SysTray", чтобы иконка точно появилась.
И еще пожелание. Дабы поменьше читатели типа меня чувствовали
себя сначала дураками, предлагаю вместо кода типа
...
if (lp==515) AfxMessageBox("Click");
...
(это в функции CTestSystrayDlg::OnIcon) использовать код типа
...
if (lp==WM_LBUTTONDBLCLK) AfxMessageBox("Click");
...
Работает идентично, а выглядит все ж не так непонятно. Если бы
еще и узнать, где в хелпах о таких подробностях почитать
можно... Надо ж на основе уроков mfcbystep и свой собственный
код научиться сочинять.