Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/43: Рейтинг темы: голосов - 43, средняя оценка - 4.88
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

BalloonHint в области уведомлений

27.03.2012, 16:22. Показов 8713. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как это реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2012, 16:22
Ответы с готовыми решениями:

Как получить список значков в области уведомлений
Куда копать ? пробовал GetWindowLong(hWnd, GWL_STYLE); не получается

BalloonHint
Понадобилось прикрутить к программе уведомления о совершенных действиях. Поискал на форуме, оказалось есть простое решение - использовать...

Как в области уведомлений панели задач переместить значок Центра уведомлений?
Всем привет. Переставил Винду и внезапно в самом краю не часы, а этот центр. 7 лет пользуюсь пк и всегда крайними были часы, а теперь стало...

25
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.03.2012, 17:26
Лучший ответ Сообщение было отмечено как решение

Решение

Это называется BalloonHint.
Добавьте на форму компонент TTrayIcon
И вызывайте следующим образом:

C++
1
2
3
4
    TrayIcon1->BalloonTimeout = 3000; // Ставлю на 3 секунды
    TrayIcon1->BalloonTitle = "Заголовок";
    TrayIcon1->BalloonHint = "Сообщение";
    TrayIcon1->ShowBalloonHint(); // Вызов
4
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.03.2012, 17:44  [ТС]
Цитата Сообщение от __bool Посмотреть сообщение
BalloonHint
А разве такое есть в С++ Builder?
C++
1
[C++ Error] Unit1.cpp(77): E2316 'BalloonTitle' is not a member of 'TTrayIcon'
0
413 / 100 / 3
Регистрация: 07.09.2011
Сообщений: 532
Записей в блоге: 2
27.03.2012, 17:48
Есть. У вас какой билдер стоит? На 2007 точно есть, на шестом - не помню
0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
27.03.2012, 17:49
Цитата Сообщение от __bool Посмотреть сообщение
Это называется BalloonHint.
Добавьте на форму компонент TTrayIcon
И вызывайте следующим образом:
C++
1
2
3
4
TrayIcon1->BalloonTimeout = 3000; // Ставлю на 3 секунды
TrayIcon1->BalloonTitle = "Заголовок";
TrayIcon1->BalloonHint = "Сообщение";
TrayIcon1->ShowBalloonHint(); // Вызов
К сожалению, открытых членов BalloonTimeout, BalloonTitle, BalloonHint, ShowBalloonHint() у TTrayIcon нет
Но, спасибо за простой способ вывода иконки в трее, а то приходилось пользоваться сложным, с необходимостью писать строчки кода, а так можно всё на форме сделать
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.03.2012, 17:55  [ТС]
Цитата Сообщение от Vega251 Посмотреть сообщение
У вас какой билдер стоит?
Borland С++ Builder 6 Enterprise Edition
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
27.03.2012, 19:24
Выше описанное в Builder 6 отсутствует, например в Rad XE есть.
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
27.03.2012, 23:16
BalloonHint спокойно реализуется структурой NOTIFYICONDATA в любом билдере. Примеры реализации есть в разделе.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
27.03.2012, 23:31
Да было все, в конечном итоге, все в API функции упирается, просто в раде элегантно и в виде компонентов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HWND MyBalloonHint = ::CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
        WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_CLOSE, 0, 0, 0, 0, NULL, NULL,
        HInstance, NULL);
 
    if (MyBalloonHint)
    {
        int X = 50, Y = 50;
        TOOLINFO ToolInfo;
 
        ToolInfo.cbSize = sizeof(TOOLINFO);
        ToolInfo.uFlags = TTF_TRANSPARENT | TTF_TRACK | NIF_INFO | TTF_PARSELINKS;
        ToolInfo.hwnd = Handle;
        ToolInfo.uId = 0;
        ToolInfo.lpszText = L"Текст подсказки";
        ::SendMessage(MyBalloonHint, TTM_ADDTOOL, 0, (LPARAM) &ToolInfo );
        ::SendMessage(MyBalloonHint, TTM_TRACKPOSITION, 0, (LPARAM) (DWORD) MAKELONG (X, Y));
        ::SendMessage(MyBalloonHint, TTM_SETTITLE, 1, (LPARAM) L"Заголовок");
        ::SendMessage(MyBalloonHint, TTM_TRACKACTIVATE, true, (LPARAM) &ToolInfo);
        // и так далее...
    }
}
Добавлено через 3 минуты
Вот кстати минутка в поиске дала вот такой вот копипаст:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void TrayIcon( DWORD dwAction, PTSTR pszTitle = NULL, PTSTR pszText = NULL )
{
    NOTIFYICONDATA nd = {0};
 
    nd.cbSize = sizeof(NOTIFYICONDATA);
    nd.hWnd = Application->MainForm->Handle;
    nd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_INFO;
    nd.dwInfoFlags = NIIF_INFO;
    nd.uCallbackMessage = NULL;
    nd.hIcon = NULL;
    nd.uTimeout = 1000;
 
    if( pszTitle != NULL ){
        lstrcpy( nd.szInfoTitle, pszTitle );
        }
    if( pszText != NULL ){
        lstrcpy( nd.szInfo, pszText );
        }
 
    Shell_NotifyIcon( dwAction, &nd );
}
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.03.2012, 00:24
А какой первый параметр нужно передовать?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.03.2012, 00:47
Цитата Сообщение от Sasha Посмотреть сообщение
А какой первый параметр нужно передовать?
NIM_ADD или просто NULL. MSDN
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.03.2012, 00:49
Собственно говоря так я в начале и сделал решил просто переспросить.

Спасибо за подтверждение
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.03.2012, 11:47  [ТС]
Вот что у меня вышло)

А в трее нужно
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.03.2012, 11:55
Отображение округленного окошка подсказок для значка приложения в System Tray
Делфи, но в данном случае это не имеет абсолютно никакого значения.
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
28.03.2012, 21:15
Примерчик для C++ Builder 6
*.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#define WM_NOTIFYICONMSG (WM_USER + 1)
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  OldProc = WindowProc;
  WindowProc = NewProc;
  Application->OnMinimize = OnMinimizeProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnMinimizeProc(TObject *Sender)
{
  PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewProc(TMessage& Message)
{
  if(Message.WParam == SC_MINIMIZE)
    {
      AddIcon();
      ShowWindow(Handle, SW_HIDE);
      ShowWindow(Application->Handle, SW_HIDE);
    }
  if(Message.LParam == WM_LBUTTONUP)
    {
      RemoveIcon();
      ShowWindow(Application->Handle, SW_SHOW);
      ShowWindow(Handle, SW_SHOW);
    }
  if(Message.LParam == WM_MOUSEMOVE)
    ModifyIcon();
  OldProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AddIcon()
{
  NOTIFYICONDATA nf;
  nf.cbSize = sizeof(NOTIFYICONDATA);
  nf.uID = 1;
  nf.hWnd = Handle;
  nf.uFlags = NIF_ICON | NIF_MESSAGE;
  nf.hIcon = Application->Icon->Handle;
  nf.uCallbackMessage = WM_NOTIFYICONMSG;
  Shell_NotifyIcon(NIM_ADD, &nf);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RemoveIcon()
{
  NOTIFYICONDATA nf;
  nf.cbSize = sizeof(NOTIFYICONDATA);
  nf.uID = 1;
  nf.hWnd = Handle;
  nf.hIcon = Application->Icon->Handle;
  Shell_NotifyIcon(NIM_DELETE, &nf);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ModifyIcon()
{
  NOTIFYICONDATA nf;
  nf.cbSize = sizeof(NOTIFYICONDATA);
  nf.uID = 1;
  nf.hWnd = Handle;
  nf.uFlags = NIF_ICON | NIF_MESSAGE | NIF_INFO;
  nf.hIcon = Application->Icon->Handle;
  nf.uCallbackMessage = WM_NOTIFYICONMSG;
  strcpy(nf.szInfo, "Привет! :)");
  strcpy(nf.szInfoTitle, "Сообщение");
  nf.dwInfoFlags = NIIF_INFO;
  nf.uTimeout = 5000;
  Shell_NotifyIcon(NIM_MODIFY, &nf);
}
//---------------------------------------------------------------------------
*.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
private:    // User declarations
        void __fastcall OnMinimizeProc(TObject *Sender);
        TWndMethod OldProc;
        void __fastcall NewProc(TMessage& Message);
        void __fastcall AddIcon();
        void __fastcall RemoveIcon();
        void __fastcall ModifyIcon();
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
3
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.03.2012, 23:38  [ТС]
Sergey-K, а как вызывается функция?
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
29.03.2012, 00:01
EdarGp, это полный код программы. Метод AddIcon() для добавления, ModifyIcon() для балуна, RemoveIcon() для удаления иконки
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.03.2012, 10:18  [ТС]
Sergey-K, почему то не получается, Допустим если нажать на button1, что бы появился балун в трее, как это сделать?
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
29.03.2012, 10:31
EdarGp, нужно сначала добавить иконку - AddIcon(), затем изменить - ModifyIcon()
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
16.04.2012, 00:51  [ТС]
а можно рабочий пример ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2012, 00:51
Помогаю со студенческими работами здесь

Значки области уведомлений
Здравствуйте! Подскажите пожалуйста, а можно ли как-то отсюда удалить программы, которые я уже удалил с компьютера? Например этот...

Удаление значков из области уведомлений
В списке &quot;Значки области уведомлений&quot;, остались записи от программ, которые были деинсталированы(через панель управление, удаление...

Пропал значок области уведомлений
здравствуйте, друзья! пропал значок области уведомлений - это такой маленький треугольник внизу рядом с часами, пробовал погуглить, но...

Контекстное меню в области уведомлений
всем привет как можно сделать такое в форме contextmenuscrupt ну или как называется

Неактивные значки в области уведомлений
Появилась незадача: на ноуте из системного трея (который справа внизу у часов) пропали системные значки: - батарея (питание), -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru