Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Winapi] "Balonowe" komunikaty w tray

Ostatnio zmodyfikowano 2016-10-26 12:14
Autor Wiadomość
pawo1
Temat założony przez niniejszego użytkownika
[Winapi] "Balonowe" komunikaty w tray
» 2016-10-25 14:38:50
Witam.
Korzystając z tego kursu http://cpp0x.pl/kursy​/Kurs-WinAPI-C++/Kontrolki​/Obszar-statusu-Tray/208. Chciałem dodać do swojego programu tak zwane balonowe komunikaty. O ile samo wyświetlenie ikony w tray u mnie działa o tyle próba kompilacji programu z komunikatami powoduje u mnie takie errory:
error: 'struct NOTIFYICONDATA' has no member named 'dwInfoFlags'
 także dla 'szInfo' i 'szInfoTitle'.
Zdefiniowałem wersję IE tak jak było to opisane w kursie.
Korzystam z Code::Blocks w wersji 10.05

Z góry dziękuję za odpowiedź
Pawo1
P-152908
pawo1
Temat założony przez niniejszego użytkownika
» 2016-10-25 16:40:22
Można powiedzieć, że rozwiązałem problem edytując strukturę NOTIFYICONDATA w shellapi.h zamiast:
C/C++
typedef struct _NOTIFYICONDATAA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    #if _WIN32_IE >= 0x0500
    CHAR szTip[ 128 ];
    DWORD dwState;
    DWORD dwStateMask;
    CHAR szInfo[ 256 ];
    _ANONYMOUS_UNION union {
        UINT uTimeout;
        UINT uVersion;
    } DUMMYUNIONNAME;
    CHAR szInfoTitle[ 64 ];
    DWORD dwInfoFlags;
    #else
    CHAR szTip[ 64 ];
    #endif
    #if _WIN32_IE >= 0x600
    GUID guidItem;
    #endif
    #if _WIN32_WINNT >= 0x600
    HICON hBalloonIcon;
    #endif
} NOTIFYICONDATAA, * PNOTIFYICONDATAA;

dałem:

C/C++
typedef struct _NOTIFYICONDATA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    TCHAR szTip[ 64 ];
    DWORD dwState;
    DWORD dwStateMask;
    TCHAR szInfo[ 256 ];
    union {
        UINT uTimeout;
        UINT uVersion;
    };
    TCHAR szInfoTitle[ 64 ];
    DWORD dwInfoFlags;
    GUID guidItem;
    HICON hBalloonIcon;
} NOTIFYICONDATA, * PNOTIFYICONDATA;

Nie wiem czy ten sposób jest dobry, ale na chwilę obecną działa. Mam nadzieję, że komuś się przyda. Jeżeli ktoś ma lepszy pomysł lub wie o jakiśch wadach tego sposobu, będę wdzięczny za rady.
P-152912
killjoy
» 2016-10-25 18:42:26
Tak się nie robi, mogą z tego jakieś cuda-niewidy wyjść. Tym bardziej, że ta struktura ma te pola, z tym, że należy zdefiniować
_WIN32_IE
 jako większe niż
0x0500
. Czyli sprowadza się to do dodania np.
#define _WIN32_IE 0x0501
. Przed
#include
 z nagłówkiem.
P-152914
pawo1
Temat założony przez niniejszego użytkownika
» 2016-10-26 12:14:27
I wszystko jasne :p nie zwróciłem uwagi, że robiłem definicję, ale po #include. Przywróciłem starą strukturę oraz dałem definicję teraz już przed nagłówkami. Wszystko działa  dzięki ;)
P-152938
« 1 »
  Strona 1 z 1