Fenster soll, wenn es minimiert wird in den infoberich geschoben werden, wie?



  • hallo,
    ich wollte wissen wie ich mein anwendungs symbol in den infobereich schiebe nach ausblendung des fenster? also neben die windoof-uhr. und müsste ich die anwendung noch mal extra aus der taskl. nemmen?

    Gruß Tobi





  • danke.
    doc hab da irgendwie noch nen problem, und zwar das die exe_symb das icon als form bekommt, hab doch eigentlich alles richtig gemacht oder?
    Hier der quelltext:

    die header_datei:

    #ifndef CURSOR_H
    #define CURSOR_H
    
    ////////////////////////////////////////////////////////////////////////////////
    // Icon
    
        #define ID_ICON01       10000
    
    #endif
    

    dann in der .rc_datei:

    #include "CursorHere.h"
    
    ID_ICON01      ICON     DISCARDABLE        "Icons/CursorHere.ico"
    

    und in der main .cpp_datei:

    WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
    
    [...]
    

    aber trotzdem bleibt das exe sybol als normales api_symbol

    wieso???
    wc.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE( ID_ICON01 ) );

    [...]



  • Mach bitte erstmal deine Hausaufgaben. Wir haben deinen Quellcode nicht, ihn debuggen musst du schon machen:

    LoadIcon

    Return Value
    If the function succeeds, the return value is a handle to the newly loaded icon.
    If the function fails, the return value is NULL. To get extended error information, call GetLastError.



  • hm? wieso.. .erlässt sich compiliern... das icon oben im fenster wird ja ersetzt nur die exe net...



  • Hmm, was verstehst du unter exe symbol ?



  • naja von der anwendung des symbol.... also das, welches auf dem Desktop liegt wo man so draufklicken muss weist du 🙂 das mein ich...



  • also ich habe folgendes getan:

    static NOTIFYICONDATA idata;
            idata.cbSize = sizeof( idata );
            idata.hWnd = hWnd;
            idata.hIcon = LoadIcon( 0, MAKEINTRESOURCE( ID_ICON01 ) );
            idata.uID = ID_ICON01;
            idata.uFlags = NIF_ICON;
    

    und in WM_COMMAND --> ID_BUTTON03 --> BN_CLICKED:
    Shell_NotifyIcon( NIM_ADD, &idata );
    ShowWindow( hWnd, SW_HIDE );

    doch erscheint untn im infobereich nur eine lücke doch nicht das icon... wieso denn nicht?



  • Hier probier mal den Code, ist zwar schon ziemlich lange her, dass ich den geschrieben habe, aber sollte funktionieren:

    /* Nachricht, die nach einem Klick auf das Programmicon in der Taskleiste gesendet wird */
    #ifndef WM_ICONCLICK
      #define WM_ICONCLICK		    (WM_APP+0)
    #endif
    
    bool ShowAppInTrayBar(HWND hReferencedWnd, bool fShowIcon, const PTCHAR* pszDisplayedTooltip,
    					  HICON hiIconInTray, int iCommandID)
    {
    	if(!IsWindow(hReferencedWnd))
    		return (false);
    
    	NOTIFYICONDATA tsym;
    	ZeroMemory(&tsym, sizeof(NOTIFYICONDATA));
    
    	// ....Icon anzeigen/erstellen....
    	if(fShowIcon)
    	{
    		tsym.cbSize				= sizeof(NOTIFYICONDATA);
    		tsym.hWnd				= hReferencedWnd;
    		tsym.uID				= iCommandID;
    		tsym.uFlags				= NIF_MESSAGE;
    		tsym.uCallbackMessage	= WM_ICONCLICK;
    		tsym.hIcon				= hiIconInTray;
    		if(pszDisplayedTooltip != NULL)
    		{
    			const unsigned int SZ_TIP_SIZE = sizeof(tsym.szTip) / sizeof(tsym.szTip[0]);
    			StrCpyN(tsym.szTip, pszDisplayedTooltip, (lstrlen(pszDisplayedTooltip)) >= SZ_TIP_SIZE
    					? SZ_TIP_SIZE : lstrlen(pszDisplayedTooltip));
    			tsym.szTip[SZ_TIP_SIZE - 1] = 0;
    			tsym.uFlags |= NIF_TIP;
    		}
    		if(hiIconInTray != NULL)
    			tsym.uFlags |= NIF_ICON;
    
    		// ....Nachricht senden....
    		if(!Shell_NotifyIcon(NIM_ADD, &tsym))
    			return (false);
    	}
    	// ....Icon verstecken/löschen....
    	else
    	{
    		// ....Strcut initialisieren....
    		tsym.cbSize	= sizeof(NOTIFYICONDATA);
    		tsym.hWnd	= hReferencedWnd;
    		tsym.uID	= iCommandID;
    		tsym.uFlags	= 0;
    
    		// ....Nachricht senden....
    		if(!Shell_NotifyIcon(NIM_DELETE, &tsym))
    			return (false);
    	}
    	return (true);
    }
    


  • jo passt schon abs allein geschaft... nur noch nen paar fragen....

    wie darf ich das verstehen:
    #define WM_ICONCLICK (WM_APP+0)

    was macht das????

    und muss ich mein icon unbedingt so laden, damit es mir angezeigt wird?

    hIcon = LoadImage( ((LPCREATESTRUCT)lParam)->hInstance,
    MAKEINTRESOURCE(ID_ICON01), IMAGE_ICON, 0, 0, LR_SHARED );

    wieso muss ich beim loeschen des tryicons des noch mal so schreiben?
    // ....Strcut initialisieren....
    tsym.cbSize = sizeof(NOTIFYICONDATA);
    tsym.hWnd = hReferencedWnd;
    tsym.uID = iCommandID;
    tsym.uFlags = 0;

    schon mal danke fuers aufklären 🙂

    Gruß Tobi


Anmelden zum Antworten