[Winapi] "Balonowe" komunikaty w tray
Ostatnio zmodyfikowano 2016-10-26 12:14
| 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 | 
|  | 
| 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: 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: 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. | 
|  | 
| 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. | 
|  | 
| 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 ;) | 
|  | 
| « 1 » |