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.


Anmelden zum Antworten