Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с окном, Окно которое нельзя закрыть 
:(
    Опции темы
dark
Дата 3.10.2003, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



Подскажите код, который бы при закрытие окна сворачивал бы его в системный трей.
PM MAIL   Вверх
NULL
Дата 3.10.2003, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 22.8.2003

Репутация: нет
Всего: нет



Код

void CMyDlg::OnClose()
{
//CDialog::OnClose();

NOTIFYICONDATA nid;
 
nid.cbSize=sizeof(nid);
nid.hWnd=m_hWnd;
nid.uID=1;
nid.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
nid.hIcon=m_hIcon;
lstrcpy(nid.szTip,"̳é ìàëþíîê");
Shell_NotifyIcon(NIM_ADD,&nid);
::DestroyIcon(nid.hIcon);
}

PM MAIL ICQ   Вверх
NULL
Дата 3.10.2003, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 22.8.2003

Репутация: нет
Всего: нет



там в конце допиши еще
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
PM MAIL ICQ   Вверх
dark
Дата 3.10.2003, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



Я воспользовался твоим кодом NULL но иконки не вижу. В момент запуска появляется место для иконки и тут же пропадает. К тому же это код для VC а я пишу в BIlder. Может в этом причина?
PM MAIL   Вверх
NULL
Дата 3.10.2003, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 22.8.2003

Репутация: нет
Всего: нет



dark, в этом причина наверно, у меня все работает. Код апишный вроде должно и в билдере и в делфи работать.

nid.hIcon=m_hIcon;

у тя может в m_hIcon ниче нет.
PM MAIL ICQ   Вверх
NULL
Дата 3.10.2003, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 22.8.2003

Репутация: нет
Всего: нет



dark, или попробуй в конце не ставить ::DestroyIcon(nid.hIcon);
PM MAIL ICQ   Вверх
dark
Дата 3.10.2003, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



А как добавить в m_hIcon иконку. Разве не иконка формы должна высвечиваться?
PM MAIL   Вверх
dark
Дата 3.10.2003, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



Отсутствие ::DestroyIcon(nid.hIcon) не помогает.
PM MAIL   Вверх
Ars
Дата 3.10.2003, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Цитата
В момент запуска появляется место для иконки и тут же пропадает

Если OnClose отрабатывает для главного окна, то приложение после этого просто закрывается.
Для того, чтобы выполнить сабж, нужно отлавливать WM_SYSCOMMAND с WParam==SC_CLOSE и в обработчике этого дела прятать окно
Form->Visible=false;
Ну и, конечно, создавать TrayIcon. В Builder'е есть соответствующий одноименный компонент, правда сыроватый, имхо


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
NULL
Дата 3.10.2003, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 22.8.2003

Репутация: нет
Всего: нет



Ars, нет не закроется //CDialog::OnClose(); покрайней мере в VC.
и если компонент есть, то мой код поидее вообще не нужен
PM MAIL ICQ   Вверх
dark
Дата 3.10.2003, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



Ars иконка пропадает даже если этот код вставить в момент создания окна.

m_hIcon - должен указывать на файл иконки или здесь должно быть чтото другое.
PM MAIL   Вверх
Ars
Дата 3.10.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Дык в Билдере же dark ваяет
Цитата
When the application shuts down, the main form receives an OnClose event

Посмотрел хелп про OnClose event и выяснилось, что и отлавливать то ничего не надо:
в обработчик передается ссылка Action, изменяя значение которой, можно управлять исходом события OnClose, в т.ч. можно и спрятать окно без его закрытия. Там и надо вставлять код для TrayIcon

Это сообщение отредактировал(а) Ars - 3.10.2003, 09:54


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
RAN
Дата 3.10.2003, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Исчезает небось, при наведении на неё мышкой. Это из-за того, что сообщения из tray не обрабатываются.
dark, tray автоматически ничего не делает. Он только рисует твою иконку и посылает потом тебе сообщения о том, что мышь навели на неё, что кнопу нажали левую, правую и т.д. А ты должен эти сообщения обрабатывать. Иначе оболочка решит, что иконка ничейная, и что приложение, создавшее её, уже приказало долго жить.
PM MAIL ICQ   Вверх
dark
Дата 3.10.2003, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2003

Репутация: нет
Всего: нет



А как это сделать? Какие события надо обработать. Код можно выложить?
PM MAIL   Вверх
Ars
Дата 3.10.2003, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



RAN
Цитата
Исчезает небось, при наведении на неё мышкой

Исчезает, когда создавшее приложение закрылось, не удалив TrayIcon


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5766 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.