Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подмена системных часов в трее, отображать в трее например еще и погоду 
:(
    Опции темы
AntonChik
Дата 20.2.2006, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте,
мне надо, чтобы рядом в трее рядом с системным временем писалась, например, температура воздуха за бортом...
Размеров новой иконки (TTrayIcon) в трее для этого не хватит (опять же вопрос : Может как-то можно увеличить ширину иконки? )...использовать несколько таких иконок мне кажется неудобным,но в первую очередь я не уверен, что они всегда будут стоять в один ряд и в нужном порядке (а может это возможно???)
Вобщем,был я здесь
и вот до чего дошел:
1.Скрываем окно(или панель,не знаю как правильно сказать) с виндовыми часами
Код

HWND hWnd;
hWnd = FindWindow("Shell_TrayWnd", NULL);
hWnd = FindWindowEx(hWnd, NULL, "TrayNotifyWnd", NULL);
hWnd = FindWindowEx(hWnd, NULL, "TrayClockWClass", NULL);
ShowWindow(hWnd, SW_HIDE); 

2.далее готовим свою форму с часами и погодой
Код

Form2->BorderStyle=bsNone;// или какой?
RECT *r=new RECT;
GetWindowRect(hWnd,r);
Form2->Width=r->right-r->left;
Form2->Height=r->bottom-r->top;
Form2->Label2->Caption="12:04 -12.4C";

ну или тип того...
3.Теперь как-то надо подсунуть Form2 в трей на место системных часов (TrayClockWClass)...
либо не скрывать часы, а засунуть Form2 в TrayNotifyWnd...

Не знаю как правильно использовать для этого SetParent,Parent,ParentWindows и прочее...
Получаются какие-то несостыковочки, хотя бы с количеством параметров SetParent...

Помогите,пожалуйста...







--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Artemon
Дата 20.2.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Решение намного проще.

1) Получи Handle часов (что ты и сделал)
2) Создай таймер и аомести в него ф-ию TextOut, которая будет выводить твой текст.

P.S.
Не забудь поставить прозрачность фона у текста


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Romikgy
Дата 20.2.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

SetParent(Form2->Handle,FindWindowEx(FindWindow("Shell_TrayWnd", NULL), NULL, "TrayNotifyWnd", NULL));

Добавлено @ 12:35
Имхо
Цитата(AntonChik @ 20.2.2006, 07:56 Найти цитируемый пост)
GetWindowRect(hWnd,r);

это лучше взять у
Цитата(AntonChik @ 20.2.2006, 07:56 Найти цитируемый пост)
hWnd = FindWindowEx(hWnd, NULL, "TrayClockWClass", NULL);




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AntonChik
Дата 21.2.2006, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



2Artemon: Спасибо за TextOut...Только вот хотел спросить, насколько это будет, так сказать, оправданно, ведь придется обновлять текст довольно-таки часто (я думаю каждые 2-5 сек),т.к. каждую минуту обновляется время, да и панелька на месте не стоит (если включен autohide)...а ведь, вообще, погоду можно обновлять и раз в 10 мин...
Впридачу может расскажешь как закинуть картинку на чужую форму,точнее как для этого правильно заюзать Draw ?

2Romikgy: и на твою строку с SetParent пишется опять же Cannot convert void* to TWinControl * smile


Это сообщение отредактировал(а) AntonChik - 21.2.2006, 06:22
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Romikgy
Дата 21.2.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(AntonChik @ 21.2.2006, 05:12 Найти цитируемый пост)
я думаю каждые 2-5 сек

Имхо каждую секунду smile

Цитата(AntonChik @ 21.2.2006, 05:12 Найти цитируемый пост)
и на твою строку с SetParent пишется опять же Cannot convert void* to TWinControl *

Чет какая то непонятка
Код

The SetParent function changes the parent window of the specified child window. 

HWND SetParent(

    HWND hWndChild,    // handle of window whose parent is changing
    HWND hWndNewParent    // handle of new parent window
   );    
 

Это прототип, где здесь void*???
Так попробуй.
Код

SetParent((HWND)Form2->Handle,FindWindowEx(FindWindow("Shell_TrayWnd", NULL), NULL, "TrayNotifyWnd", NULL));

Добавлено @ 10:37
smile Мож сделать так
Код

Form2->Caption="Lichno_moya_podpis";
SetParent(FindWindow(NULL, "Lichno_moya_podpis"),FindWindowEx(FindWindow("Shell_TrayWnd", NULL), NULL, "TrayNotifyWnd", NULL));



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AntonChik
Дата 21.2.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



боюсь тут дело в перегрузке функции
Код

virtual void __fastcall SetParent(TWinControl* AParent);
...

как с этим справиться???


--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Romikgy
Дата 21.2.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



дык это чейто метод!
попробуй так
Код

System::SetParent(...);



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AntonChik
Дата 21.2.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



увы, 'SetParent' is not a member of 'System' smile

Это сообщение отредактировал(а) AntonChik - 21.2.2006, 14:00
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
_hunter
Дата 21.2.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ну напиши просто someControl->Parent = someOtherControl;


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Romikgy
Дата 21.2.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

#include <winuser.h>

есть?



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AntonChik
Дата 22.2.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



2Romikgy: подключаю winuser.h ,но не помогает...

2_hunter: Form2->Parent=(TWinControl*)hWnd компиляется, но при обращении выкидывает AccessViolation...

и все-таки как быть с перегрузкой SetParent..???
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Romikgy
Дата 22.2.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



AntonChik, создай отдельную ф-цию, вне объявлений класса Form2, и вызови там


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AntonChik
Дата 22.2.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



спасибо. да, были такие мысли... конечно же работает (в смысле нет перегрузки и все такое)...но, вцелом, вся эта замутка с подменой часов - пустая затея...
надо делать по уму - создавать свой DeskBand Object( как мне посоветовали на другом форуме) и не париться ...
по этому поводу наверно надо открывать новую тему smile

Это сообщение отредактировал(а) AntonChik - 22.2.2006, 13:31
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Romikgy
Дата 22.2.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(AntonChik @ 22.2.2006, 12:29 Найти цитируемый пост)
наверно надо открывать новую тему

Да , новую тему
Цитата(AntonChik @ 22.2.2006, 12:29 Найти цитируемый пост)
DeskBand Object

А че это?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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