Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
1

Работа с системным треем

07.12.2009, 16:49. Показов 2075. Ответов 2
Метки нет (Все метки)

Здравствуйте, вот пишу программу после запуска она сворачивается в трее и управление ею происходит от туда Меню уже написал осталось только отловить нажатие мишки по иконке в трее но как отловить нажатие мышкой я не знаю подскажите мне пожалуйста.
P.S OS Win7
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2009, 16:49
Ответы с готовыми решениями:

Получение путей к системным каталогам
Получение путей к системным каталогам. Появление этого поста связано с одной из стандартных...

Простой путь к системным папкам
Прошу прощения т.к такие темы были и не раз, но ответ был всегда в стиле: Дофига всякой ненужной...

Как работать с системным реестром в Windows XP
Скоко не слонялся по просторам нашего могучего интернета в поисках подробного описания функций ...

Нужна информация или мануал по системным функциям
Доброго времени суток, будьте добры оказать услугу. Есть ли у кого источники откуда я могу...

2
Эксперт JavaЭксперт С++
8369 / 3591 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
07.12.2009, 18:55 2
Лучший ответ Сообщение было отмечено Alex90 как решение

Решение

Alex90, скинь код программы
В функции оконной процедуры
C++
1
if(message == WM_ICON_CB && hwnd == hwnd_myapp && wParam == nid.uID)
0
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
07.12.2009, 19:41  [ТС] 3
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
#include <windows.h>
 
bool TrayMessage (HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, PSTR pszTip) 
 
{ 
   BOOL res; 
 
   NOTIFYICONDATA tnd; 
 
   tnd.cbSize = sizeof(NOTIFYICONDATA); 
   tnd.hWnd = hDlg; 
   tnd.uID = uID; 
 
   tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; 
   tnd.uCallbackMessage = WM_MOUSEMOVE;
   tnd.hIcon = LoadIcon(0, IDI_WARNING);
 
 
   if (pszTip) 
   { 
       lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); 
   } 
   else 
   { 
       tnd.szTip[0] = '\0'; 
   } 
 
   res = Shell_NotifyIcon(dwMessage, &tnd); 
 
   return res; 
}
 
 
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
{
    HWND hwnd;
    HWND hWnd, hMenu;
    MSG msg;
    LONG x,y;
    WNDCLASS w;
    memset(&w, 0, sizeof(WNDCLASS));
    w.style = CS_HREDRAW | CS_VREDRAW;
    w.lpfnWndProc = WndProc;
    w.hInstance = hInstance;
    w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    w.lpszClassName = "My Class";
    RegisterClass(&w);
    hwnd = CreateWindow("My Class", "My title", WS_OVERLAPPEDWINDOW,
        300, 200, 200, 180, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LONG WINAPI WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    static HMENU hMainMenu;
 
    HWND hMenu;
    TrayMessage(hWnd, NIM_ADD, 777, 0, "Test tray");
//  ShowWindow (hWnd, SW_HIDE);
    switch (Message){
    case WM_COMMAND:
 
if(LOWORD(wParam) == 1002)
            {
                   MessageBox(hWnd, "Open", "Open", 0);
            }
 
        break;
    }
switch (Message){
    case WM_COMMAND:
if(LOWORD(wParam) == 1004)
            {
                PostQuitMessage(0);
            }
 
        break;
    }
switch (Message){
    case WM_RBUTTONDOWN:
            {
            hMainMenu = CreatePopupMenu();
            AppendMenu( hMainMenu, MF_STRING, 1002, "Open");
            AppendMenu( hMainMenu, MF_STRING, 1003, "About");
            AppendMenu( hMainMenu, MF_SEPARATOR, 0, "");
            AppendMenu( hMainMenu, MF_STRING, 1004, "Exit");
            SetForegroundWindow(hWnd);
            TrackPopupMenuEx(hMainMenu,TPM_HORIZONTAL|TPM_LEFTALIGN,777,777,hWnd,NULL);
            }
        break;
}
 
   switch (Message){
    case WM_DESTROY:    
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, Message, wParam, lParam);
    }
    return 0;
}
меню появляется только если щелкнуть ПКМ и только в "программе"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2009, 19:41

Получение пути к системным папкам через hexadecimal значение
Добрый день, может кто подсказать такую вещь, вот есть код такого вида: bool getPath(char...

Механизмы взаимодействия прикладных программ с системным календарем и таймером
Пожалуйста помогите ответить на вопрос: какие могут быть механизмы взаимодействия прикладных...

Воспроизведение звука системным динамиком при нажатии определенной клавиши
Добрый вечер! Кто знает как сделать, чтоб при нажатии клавиши &quot;.&quot; срабатывал Beep (600,400), а при...

Работа с треем
Здравствуйте! Подскажите, как сделать так, чтобы во всплывающем окне из трея (BalloonTip)...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru