C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Подсказка в трее, Наверное, есть функция API.
** Umka
  Отправлено: 01.02.2004, 16:01


Не зарегистрирован







user posted image

Как сделать такую вещь на CBuilder?
** Umka
  Отправлено: 01.02.2004, 16:07


Не зарегистрирован







user posted image

Извините, картинка здесь
Admin
Отправлено: 02.02.2004, 09:17


Владимир

Группа: Администратор
Сообщений: 1190



И там тоже нет.
А подсказка — как и везде, это свойство Hint

Отредактировано Admin — 02/02/2004, 10:21
Gedeon
Отправлено: 02.02.2004, 10:07


Ветеран

Группа: Модератор
Сообщений: 1742



все зависит от того каким образом картинка запихнута в трэй, если с помощью какого-нить компонента, то админ правильно написал — это свойство хинт, если через winapi то тоже есть решение, посмотри пример в $(BCB)\Examples\Controls\trayicon, либо MSDN
Gedeon
Отправлено: 02.02.2004, 10:15


Ветеран

Группа: Модератор
Сообщений: 1742



конкретно имеется в виду, что если икона запихнута с помощью
CODE

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
   DWORD dwMessage,
   PNOTIFYICONDATA pnid
);


то для показа подсказки нужно правильно заполнить структуру pnid
Umka
  Отправлено: 02.02.2004, 10:46


Дежурный стрелочник

Группа: Участник
Сообщений: 32



Неее, вы меня не поняли. Подсказка ни хинт а в форме овала. Как появляется рядом со значком в трее, когда выходиш в интернет по Dial-Up или когда на диске мало места.

Какртинка — смотрите прикреплённый файл.

Присоединить изображение

Присоединить изображение

Admin
Отправлено: 02.02.2004, 14:58


Владимир

Группа: Администратор
Сообщений: 1190



biggrin.gif Понятно.
И все же это hint.
А насчет округлостей — можете рисовать какие угодно hint-ы
Например, скачайте компонент FormHints
или можно использовать компоненты FormHelp
(смотрите пример):
http://rxlib.ru/prim/trayhint.rar (12 Kb)

---

Можно и переопределить установки для окна hint-a

CODE

public: // User declarations
void __fastcall MyShowHint(AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo);


//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnShowHint = MyShowHint;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MyShowHint(AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo)
{
int i;
HRGN rgn;
for(i = 0; i < Application->ComponentCount — 1; i++){
if(dynamic_cast<THintWindow*>(Application->Components[i])){
THintWindow *Hw = ((THintWindow*)Application->Components[i]);
Hw->Canvas->Font->Name = "Arial";
Hw->Canvas->Font->Size = 26;
Hw->Canvas->Font->Style = Hw->Font->Style<<fsBold;
HintInfo.HintColor = clWhite;
int tw = Hw->Canvas->TextWidth(HintStr)+10;
int th = Hw->Canvas->TextHeight(HintStr)+10;
rgn = CreateRoundRectRgn(0, 0, tw, th, 45, 45);
SetWindowRgn(Hw->Handle, rgn, true);
}
}
}
//-------------------------------------------------------------


Что касается hint-a в трее это по видимому надо
переопределять Windows-hint

Отредактировано Admin — 02/02/2004, 16:17
Umka
Отправлено: 03.02.2004, 16:30


Дежурный стрелочник

Группа: Участник
Сообщений: 32



Admin
Спасибо!

Отредактировано Umka — 04/02/2004, 11:14

Присоединить изображение

Присоединить изображение


Вернуться в Вопросы программирования в C++Builder