Ballonmessage
-
Ich arbeite schon eine ganze weile an einem Programm was einfach ein Trayicon erstellt und dann eine Ballonmessage ausgibt. Naja bis zum Trayicon hab ich es auch geschafft, aber mit der Ballonmessage bin ich echt am verweifeln ;(. Also das Programm funktioniert wenn man von //Ballonanfang bis //Ballonende alles wegloescht. Ich wuerde ja denken das ich einiges falsch gemacht habe aber nicht 29 fehler. Ich hab das gefuel das ich irgendwie eine headerdatei nicht eingefuegt hab oder so ;/. Es erkennt ja nichtmal TOOLINFO.
Kann mir jemand helfen?#include <windows.h> #include "resource.h" //#define _WIN32_IE 0x0501 //wenn ich den Kommentar wegmache kommt ein Fehler wegen neudefinition LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); HICON hIcon; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "TestTool" ; HWND hwnd ; MSG msg ; WNDCLASSEX wndclass ; hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_XX)); wndclass.cbSize = sizeof (wndclass) ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = hIcon; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; RegisterClassEx (&wndclass) ; hwnd = CreateWindow (szAppName, "Ein Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } void Iconerstellen(HWND hwnd){ RECT desktopRect,thisWindowRect; GetWindowRect(GetDesktopWindow(),&desktopRect); GetWindowRect(hwnd,&thisWindowRect); // Set the destination rect to the lower right corner of the screen desktopRect.left = desktopRect.right; desktopRect.top = desktopRect.bottom; // Animate DrawAnimatedRects(hwnd,IDANI_CAPTION,&thisWindowRect,&desktopRect); ANIMATIONINFO ai; ai.cbSize = sizeof(ai); SystemParametersInfo(SPI_GETANIMATION,sizeof(ai),&ai,0); if (ai.iMinAnimate)// animations are turned ON, go ahead with the animation ShowWindow(hwnd,SW_HIDE); // Show the notification icon NOTIFYICONDATA nid; ZeroMemory(&nid,sizeof(nid)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hwnd; nid.uID = 0; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage = WM_USER; nid.hIcon = hIcon; //BALLON /* // Hier kommen auch fehler das uTimeout und so nicht in NOTIFYICONDATA definiert sind, was auch stimmt ;( nid.uTimeout = 3000; nid.dwInfoFlags = NIIF_INFO; nid.szInfo = "HALLO"; nid.szInfoTitle = "Ich sag mal:"; //BALLONENDE*/ lstrcpy(nid.szTip,"Double-Click To Maximize."); Shell_NotifyIcon(NIM_ADD,&nid); } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam){ bool m_bIconDblClicked; switch (iMsg){ case WM_CREATE : Iconerstellen(hwnd); //Ballonanfang RECT rect; HWND hIPAddBalloonTip; hIPAddBalloonTip = CreateWindowEx(WS_EX_TOPMOST, "ToolTip", NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP | TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, NULL, m_hInstance, NULL); SetWindowPos(hIPAddBalloonTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); // GET COORDINATES OF THE MAIN CLIENT AREA GetClientRect (hwnd, &rect); // struct specifying info about tool in ToolTip control TOOLINFO ti3; strcpy(strTT, "LALA"); lptstr = strTT; // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE ti3.cbSize = sizeof(TOOLINFO); ti3.uFlags = TTF_CENTERTIP | TTF_SUBCLASS; ti3.hwnd = m_hIPAddressEdit; ti3.hinst = m_hInstance; ti3.uId = uid; ti3.lpszText = lptstr; // ToolTip control will cover the whole window ti3.rect.left = rect.left; ti3.rect.top = rect.top; ti3.rect.right = rect.right; ti3.rect.bottom = rect.bottom; // Activate the close button tooltip SendMessage(hIPAddBalloonTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti3); //Ballonende return 0; case WM_PAINT : return 0 ; case WM_DESTROY : PostQuitMessage (0) ; // CREATE A BALLOON TIP WINDOW FOR THE IP ADDRESS EDIT return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; }So dann compilieren und dann das

--------------------Konfiguration: Test - Win32 Debug--------------------
Kompilierung läuft...
Test.cpp
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(106) : error C2065: 'TTS_NOPREFIX' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(106) : error C2065: 'TTS_ALWAYSTIP' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(106) : error C2065: 'TTS_BALLOON' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(108) : error C2065: 'm_hInstance' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(116) : error C2065: 'TOOLINFO' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(116) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'ti3'
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(116) : error C2065: 'ti3' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(118) : error C2065: 'strTT' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(119) : error C2065: 'lptstr' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(122) : error C2228: Der linke Teil von '.cbSize' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(123) : error C2228: Der linke Teil von '.uFlags' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(123) : error C2065: 'TTF_CENTERTIP' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(123) : error C2065: 'TTF_SUBCLASS' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(124) : error C2228: Der linke Teil von '.hwnd' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(124) : error C2065: 'm_hIPAddressEdit' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(125) : error C2228: Der linke Teil von '.hinst' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(126) : error C2228: Der linke Teil von '.uId' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(126) : error C2065: 'uid' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(127) : error C2228: Der linke Teil von '.lpszText' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(130) : error C2228: Der linke Teil von '.rect' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(130) : error C2228: Der linke Teil von '.left' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(131) : error C2228: Der linke Teil von '.rect' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(131) : error C2228: Der linke Teil von '.top' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(132) : error C2228: Der linke Teil von '.rect' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(132) : error C2228: Der linke Teil von '.right' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(133) : error C2228: Der linke Teil von '.rect' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(133) : error C2228: Der linke Teil von '.bottom' muss eine Klasse/Struktur/Union sein
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(136) : error C2065: 'TTM_ADDTOOL' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\Test\Test.cpp(136) : error C2065: 'LPTOOLINFO' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.Test.exe - 29 Fehler, 0 Warnung(en)
pls need help
-
#define _WIN32_IE 0x0501 // Du mußt das definieren BEVOR Du Windows.h einbindest! #include <windows.h> #include "resource.h"
-
k jetzt funktioniert das wenigstens, aber das behebt natürlich nicht die restlichen fehler. Muss ich irgendwas verlinken oder eine headerdatei einfügen?
-
K ich bin jetzt mit meinem Problem deutlich weiter! ich hatte vergessen eine headerdatei einzufuegen. und zwar "commctrl.h". Naja jetzt steh ich mit einem groesseren Problem da. MSDN:
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; } NOTIFYICONDATA, *PNOTIFYICONDATA;K in meiner headerdatei steht da nur die haelfte drin da gibt es z.b. kein uTimeout ;/.
Ich hab #define _WIN32_IE 0x0501 ganz oben stehen und ich hab es auch mit #define _WIN32_IE 0x0600 probiert.
Hat jemand eine ideee?
-
K?
Neueres Platform SDK herunterladen...
-
Das kann dauern mit 28k modem. Naja ich wart wahrscheinlich bis Montag da kann ich mir das in der schule ziehen.