Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Alex90
17 / 17 / 1
Регистрация: 30.01.2009
Сообщений: 103
#1

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

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

Здравствуйте, вот пишу программу после запуска она сворачивается в трее и управление ею происходит от туда Меню уже написал осталось только отловить нажатие мишки по иконке в трее но как отловить нажатие мышкой я не знаю подскажите мне пожалуйста.
P.S OS Win7
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 16:49     Работа с системным треем
Посмотрите здесь:

C++ Работа со структурами, работа с векторами.
C++ Работа с битами И Работа с символьными данными
Механизмы взаимодействия прикладных программ с системным календарем и таймером C++
Простой путь к системным папкам C++
Нужна информация или мануал по системным функциям C++
Воспроизведение звука системным динамиком при нажатии определенной клавиши C++
Получение пути к системным папкам через hexadecimal значение C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.12.2009, 18:55     Работа с системным треем #2
Alex90, скинь код программы
В функции оконной процедуры
C++
1
if(message == WM_ICON_CB && hwnd == hwnd_myapp && wParam == nid.uID)
Alex90
17 / 17 / 1
Регистрация: 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;
}
меню появляется только если щелкнуть ПКМ и только в "программе"
Yandex
Объявления
07.12.2009, 19:41     Работа с системным треем
Ответ Создать тему
Опции темы

Текущее время: 14:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru