![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 1 Всего: 3 |
Добрый день!
В Win API чайник, так что если пишу глупости - поправьте, как надо. Есть у меня некое расчетное приложение (писано на Open Watcom как обычное консольное, int main() без всяких окон... Работает себе в фоне благодаря ключику -l=nt_win при компиляции. Если скомпилировать как консольное - ну, будет черное окошко Захотелось иметь возможность следить, как оно живет - при помощи иконки в области уведомлений (ну, типа, менять иконку в зависимости от стадии расчета, в Tip'е проценты указать... пока никаких меню). Делаю примерно так -
Работает. Иконка появляется. Могу ее поменять. Но как только над ней провести мышкой - она тут же исчезает! Что я делаю не так? и как надо? Заранее спасибо за консультацию! |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Код ниочем.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| disputant |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 1 Всего: 3 |
В каком смысле? Нужно привести всю программу? Ладно, вот тот минимум, для которого я хотел бы получить результат:
Вот test.rc:
Вот компиляция:
Файл с иконкой нукжен? Хочу, чтоб эти 10 секунд иконка из трея не исчезала при проведении над ней мышкой, а напротив, чтоб показывала подсказку. Теперь код о чем-то или опять ни о чем? Добавлено через 13 минут и 18 секунд Да, вдогонку: замена на
работает, если есть консольное окно. Но мне надо именно при -l=nt_win, когда окно вообще не создается (что-то типа сервиса...) - в этом случае GetConsoleWindow() не работает... |
||||||||||
|
|||||||||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
У тебя код правильно работает, создает иконку в системном трее и через 10 мс ее удаляет.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
Почему не просто sizeof(NOTIFYICONDATA)? А то непонятно, размер для какой версии Windows Вы имеете в виду. Плюс стоит обнулить всю структуру. Добавлено @ 20:16 +1 Ну хотя бы Sleep( 10 * 1000 ); Это сообщение отредактировал(а) feodorv - 12.7.2012, 20:24 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Создай обычное Win32 приложение
только вместо создания окна сделай так
Создастся окно которое не будет никогда видно, и которое будет принимать сообщения. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| disputant |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 1 Всего: 3 |
Сенкс, вижу, что без окна никак... Жаль :( Впрочем, ну и пусть висит себе... Все равно если соберусь потом дописывать какое-то взаиможействие - надо же кому-то сообщения слать? PS всем, кто говорил про 10мс: это не Sleep, а sleep (обратите внимание на регистр первой буквы). Так что на самом деле это 10 секунд... Это сообщение отредактировал(а) disputant - 12.7.2012, 21:35 |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 13 Всего: 85 |
В принципе можно и без окна. nid.hWnd = GetDesktopWindow (); Будет слать нотификейшны десктопу. Не совсем чисто, но должно работать. (на всякий пожарный, лучше слать гарантированно свободное сообщение, от греха подальше) nid.uCallbackMessage = WM_APP+1234; |
|||
|
||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 1 Всего: 3 |
Все, что ни делается - к лучшему: дописав создание окошка, я разогнался и таки написал взаимодействие с программой через меню пиктограммы в уведомлениях, что, в общем-то, было в очень дальних планах. Так что большое всем спасибо |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |