Поиск:

Ответ в темуСоздание новой темы Создание опроса
> иконка в трей, не получается отобразить popmenu 
V
    Опции темы
TaNK
Дата 9.4.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет, вопрос стоит так - у меня на форме есть PopupMenu2, TrayIcon2, ImageList1, свойство 
TrayIcon2->visible = false,  
TrayIcon2->Icons = ImageList1, 
TrayIcon2->PopMenu = PopMenu2, 
TrayIcon2->PopMenuOn = imRightClickUp
Нажимаем на кнопку свернуть
Код

TrayIcon2->Visible = true;
    TrayIcon2->Minimize();

    Sleep(5000);
    TrayIcon2->Visible = false;
    TrayIcon2->Restore();

Иконка появляется ,Hint отображается, но понажатию правой кнопкой на иконки в трее PopMenu не выскакивает....отображается только тогда, когда отработал TrayIcon2->Restore(); бред какой то...PopMenu состоит из двух меню....Выход и показать...
Если возник вопрос зачем оператор Sleep  - я пока не знаю на какое собитие это повесить..т.е. если Закрыть приложение это - OnClose, а свернуть...пока туплю...что подскажите



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Ты это имелл ввиду имхо?

Присоединённый файл ( Кол-во скачиваний: 27 )
Присоединённый файл  temp.exe 586,50 Kb
PM MAIL   Вверх
TaNK
Дата 9.4.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrbrooks @ 9.4.2008,  10:42)
Ты это имелл ввиду имхо?

ну да


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Ок. Тогда скажи у тебя случаем не шестой билдер? Если да - то в нем TTrayIcon - скажем как тестовая версия. Нормально ты с этим копонентом в 6-м не поработаешь (это сугубо мое мнение - я на компонент забил в 6 версии). Как выход работу с треем написать на WinAPI. Либо перейти на более позднюю версию Билдера.
PM MAIL   Вверх
TaNK
Дата 9.4.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrbrooks @ 9.4.2008,  13:19)
Ок. Тогда скажи у тебя случаем не шестой билдер? Если да - то в нем TTrayIcon - скажем как тестовая версия. Нормально ты с этим копонентом в 6-м не поработаешь (это сугубо мое мнение - я на компонент забил в 6 версии). Как выход работу с треем написать на WinAPI. Либо перейти на более позднюю версию Билдера.

да ты прав builder у меня 6,
а есть у тебя примерчик...на WinApi?



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Вот держи пример - вызов Popup Menu с использованием winapi

Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  primer.rar 85,42 Kb
PM MAIL   Вверх
TaNK
Дата 9.4.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо....+1 еще вопрос....книжку можешь посоветовать по таким делам?


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Насколько я помню все эти вопросы очень хорошо расписывались в "Приемы программирования в C++ Builder 6" Архангельского А.Я. Если не читал - рекомендую - лишним не будет.  smile 
PM MAIL   Вверх
TaNK
Дата 9.4.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



учту,  еще вопрос
нажимаю кнопку в приложении Свернуть....на какое событие надо повесить код...чтобы программа сворачивалась, и появлялась в трее...


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


Опытный
**


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

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



Код

Type TMain = class(TForm)
....
protected
Procedure WMGetSysCommand(var Message : TMessage); message WM_SYSCOMMAND;
end;

Код

//----------------------------------------------------------------
// Обработка сообщения WM_SYSCOMMAND (перехват минимизации окна)
//----------------------------------------------------------------
Procedure TMain.WMGetSysCommand(var Message : TMessage) ;
Begin
IF (Message.wParam = SC_MINIMIZE)
Then Main.Visible:=False
Else Inherited;
End;


на дельфях этот код отлично работатет...попробывал перевести на с++ ошибок не выдает..но не прячет окно...


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


Новичок



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

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



Вот так работает вроде

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Application->OnDeactivate = TestDeactivate;
}

void __fastcall TForm1::TestDeactivate(TObject *Sender)
{
    Form1->Hide();
}

PM MAIL   Вверх
Mysterio
Дата 5.5.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Планирующий
*


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

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



Цитата(mrbrooks @  9.4.2008,  14:15 Найти цитируемый пост)
Вот держи пример - вызов Popup Menu с использованием winapi


BCB6 по умолчанию ругается на какие-то библиотеки диаграм. В примере ниже всё вырезано.

Кстати, для параметра от TMessage (в примере mess.LParam) значение 514 - для двойного щелчка левой кнопки мыши, но оно выполняется, когда кнопка нажата. Если нужен "чистый" двойной щелчок, можно использовать 515. То же самое и с двойным, 516-517.


А проблема вот в чём. Если на значке свернутой программы ткнуть правой кнопкой и после выпадения меню вызвать программу двойным кликом, на передний план окно не вылезает. И, похоже, не срабатывает OnRestore, окно считается по-прежнему свёрнутым и по "свернуть" ничего не происходит.

Как от этого избавиться?

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  TrayIcon.zip 12,56 Kb
PM MAIL   Вверх
mrbrooks
Дата 5.5.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Слухай имхо создал бы ты новую тему а то это уже закрыта. А в добавок скажу что все проблемы мы решили в другом топике - кажется перевести код с дельфи - этого же автора.

Добавлено через 1 минуту и 6 секунд
здесь вот посмотри
PM MAIL   Вверх
xvr
Дата 6.5.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(TaNK @ 9.4.2008,  10:02)
Всем привет, вопрос стоит так - у меня на форме есть PopupMenu2, TrayIcon2, ImageList1, свойство 
Нажимаем на кнопку свернуть
Код

TrayIcon2->Visible = true;
    TrayIcon2->Minimize();

    Sleep(5000);
    TrayIcon2->Visible = false;
    TrayIcon2->Restore();

Иконка появляется ,Hint отображается, но понажатию правой кнопкой на иконки в трее PopMenu не выскакивает....отображается только тогда, когда отработал TrayIcon2->Restore();

В строке 4 ВЕСЬ main thread будет остановлен на 5 секунд. Вопрос - кто будет показывать popup меню, если цикл обработки сообщений не крутится и весь GUI заморожен?

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

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

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

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

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


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

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


 




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


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

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