Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

Нажатие на иконку в трее

03.03.2012, 20:07. Показов 2540. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
господа вывожу иконку в трей таким образом-
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <windows.h>
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
HINSTANCE hInst;
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow(hwnd, SW_HIDE);
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
ShowWindow(hwnd,SW_SHOW);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{char szText[100];
HICON hIco;
BOOL TrayMessage(HWND,DWORD,UINT,HICON,PSTR);
   hIco=LoadIcon(hInst,IDI_ASTERISK);
 
    switch (message)                  /* handle the messages */
    {
case WM_CREATE:
   lstrcpy(szText,"Ïðèâåò"); // ïîäñêàçêà
   TrayMessage(hwnd,NIM_ADD,0,hIco,szText); // NIM_ADD äîáàâèòü èêîíêó â òðåé
  break;
case WM_LBUTTONUP:
     Beep(550,500);
     break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
BOOL TrayMessage(HWND hwn,DWORD dwMsg,UINT uID,HICON hIcon,PSTR pszTip) 
 { 
 BOOL rezt; 
 NOTIFYICONDATA nid; 
 nid.cbSize = sizeof(NOTIFYICONDATA); 
 nid.hWnd = hwn; 
 nid.uID = uID; 
 nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
 nid.hIcon = hIcon; 
    if (pszTip) 
    { 
     lstrcpyn(nid.szTip, pszTip, sizeof(nid.szTip)); 
    } 
    else 
    { 
     nid.szTip[0] = '\0'; 
    } 
    rezt = Shell_NotifyIcon(dwMsg, &nid); 
    return rezt; 
 }
а вот как отследить нажатие на иконку в треи
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2012, 20:07
Ответы с готовыми решениями:

Как убить иконку в трее?
Доброго дня всем! Долго мучился над проблемой как убить запущенную прогу, убил. Но возникла новая проблема. После того как я жестко...

Как изменить иконку в трее
Как изменить иконку в треи после? делаю так ложу иконки в папку ресурсов пытаюсь изменить командой notifyIcon1.Icon = new...

Сделать анимированную иконку в трее?
Предварительная подготовка нескольких картинок не нравится. Моя идея такова: Сделал иконку 16х16 пикселей - это будет шаблон, получился...

5
1 / 0 / 1
Регистрация: 31.08.2012
Сообщений: 12
31.08.2012, 18:23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(message == MYWM_NOTIFYICON && lParam == WM_LBUTTONDOWN)
    {
        if (iTray==0)
        {
                          // скрыть окно при нажатии на иконку
            ShowWindow(hWnd,SW_HIDE);
            iTray=1;
        }
        else
        {
                              // показать окно при нажатии на иконку
            ShowWindow(hWnd,SW_SHOW);
            iTray=0;
        }

не забудь в глобальные поместить int iTray = NULL;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,911
Записей в блоге: 12
31.08.2012, 18:40
xrnd, пока в поле nid.uCallbackMessage не будет занесено MYWM_NOTIFYICON, это работать не будет
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
31.08.2012, 23:48  [ТС]
xrnd, Уважаемый вы конечно меня извени те , но вы дату сообщение смотри те , неужели вы думаете я до сих пор не нашёл ответ на этот вопрос ?
0
1 / 0 / 1
Регистрация: 31.08.2012
Сообщений: 12
01.09.2012, 15:08
A вы думаете вы один ответ на этот вопрос искали? Не нужно вам, понадобится кому-нибудь другому.
0
2 / 2 / 0
Регистрация: 10.04.2013
Сообщений: 82
08.02.2016, 23:34
Например мне,спасибо парни.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2016, 23:34
Помогаю со студенческими работами здесь

Менять иконку в трее в зависимости от условия
Доброго времени суток. Прошу помочь в следующей задаче. В таскбаре (рядом с часами) надо вывести значек (пиктограмму), который (ая) в...

Как заменить одну иконку другой в трее?
Вот собссно и весб вопрос... просто я не могу врубиться КАК? Разбирался с примером: Procedure TForm1.Ic(n:Integer;Icon:TIcon); Var...

Я изменил иконку формы, а иконка в трее осталось прежней
Я изменил иконку формы (с++), а иконка в трее осталось прежней. Что надо сделать чтобы иконки были одинаковыми?

Не отображать интерфейс приложения, а показать только иконку в трее
Я хочу сделать прогу таким образом: 1. При её запуске появляется ТОЛЬКО иконка в трее, NotifyIcon. Создавать её придётся в файле...

Событие Notifyicon.BaloonTipClicked выполняется когда кликаю на иконку в трее
В общем кинул на форму notifyIcon1, в ивентах прописал определенные действия в BaloonTipClicked. Если во время этого уведомления я нажимаю...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru