От: Aleksander Romanovsky Кому: kaev@yandex.ru Дата: 10 февраля 2000 г. 13:15 Тема: Можно вопросик... Добрый день. Не подскажешь как избавиться от пиктограммы в панели задач. Я перехватил сообщение минимизации из системной панели,скинул пиктограмму в SysTray,но вот убрать пиктограмму из панели задач не получается. Заранее благодарен. Alex. От: Andy Кому: kaev@yandex.ru Тема: MFCByStep Дата: 4 февраля 2000 г. 14:06 Привет Ты не знаешь как сделать, чтобы диалоговое приложение под MFC при запуске не открывала диалог а появлялась в нижнем правом углу в виде иконки? andy
Итак, если я не ошибаюсь, то нижнее правое окошко это область имеющая название SysTray. Туда можно помещать иконки программ. Создаем приложение MFC AppWizard на основе диалогового окна. Вырубаем все лишнее. Теперь на диалоговое окно помещаем две кнопки и создаем функции их обработки. Вот так.
Пора делать код для кнопок. Этот для кнопки SysTray, которая поместит значек в эту область.
void CTestSystrayDlg::OnButton1() { NOTIFYICONDATA nf; nf.hWnd = m_hWnd; nf.uID = NULL; nf.uFlags = NIF_ICON; nf.uCallbackMessage = NULL; HICON hIcon; hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); nf.hIcon = hIcon; Shell_NotifyIcon(NIM_ADD,&nf); }
А этот код для кнопки Remove.
void CTestSystrayDlg::OnButton2() { NOTIFYICONDATA nf; nf.hWnd = m_hWnd; nf.uID = NULL; nf.uFlags = NIF_ICON; nf.uCallbackMessage = NULL; nf.hIcon = NULL; Shell_NotifyIcon(NIM_DELETE,&nf); }
Мы используем функцию Shell_NotifyIcon, которая добавляет, модифицирует и удаляет иконы из панели задач. Вот её описание.
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid );
Нам нужно указать команду и заполнить структуру типа NOTIFYICONDATA. В ней указать наш HWND, установить флаги, указать ссылку на икону, что я и делаю.
Давайте испытаем. Нажмите кнопку SysTray и значек появится, нажмите Remove и значек удалится.