Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Program Icon in der taskleiste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.08.2002, 23:28 Uhr
~Netbound
Gast


Hallo, ich möchte ein program schreiben was wenn ich es verkleiner in der taskeiste erscheint, da wo z.b. sich das soundsymbol und das icq icon usw befindet, ich weiss jetzt nicht wie das genau heisst, kann mir jamand sagen wie das genannt wird und wie man vieleicht sowas anwendet?


mfg Netbound
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.08.2002, 08:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi schau mal in der msdn unter


C++:
BOOL Shell_NotifyIcon(
    DWORD dwMessage,
    PNOTIFYICONDATA lpdata
);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.08.2002, 12:14 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
mal noch ein kleines Bsp. dazu:
Projekt: Konsole mit MFC Unterstützung, subsystem:windows bei den Linkereinstellungen. In der erstellten TrayIcon.cpp die Main Funktion löschen und durch den Quellcode ersetzen. IDI_MAINFRAME selbst erzeugen:


C++:
// TrayIcon.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include "TrayIcon.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BOOL ismod, option=true;
myapp a;

BOOL myapp::InitInstance()
{
    myframe *p ;
    p = new myframe ;
    m_pMainWnd = p ;
    return TRUE;
}

/* Message_Map myframe */
BEGIN_MESSAGE_MAP ( myframe, CFrameWnd )
    ON_WM_CREATE()
    ON_COMMAND (101,option_1)
    ON_COMMAND (102,option_2)
    ON_COMMAND (104,beenden)
    ON_COMMAND (105,about)
    ON_UPDATE_COMMAND_UI(101, OnUpdateoption_1)
    ON_UPDATE_COMMAND_UI(102, OnUpdateoption_2)
END_MESSAGE_MAP()

void myframe::about()
{
    MessageBox("Copyright (c)2002 by Ich",
        "Info",MB_ICONASTERISK);
}

myframe::myframe()
{
    Create ( 0, "TrayDemo" ) ;
}

int myframe::OnCreate ( LPCREATESTRUCT l )
{
    CFrameWnd::OnCreate ( l ) ;

    m_tray.create ( NULL, WM_USER + 15, "",
                        LoadIcon ( AfxGetInstanceHandle(),
                        MAKEINTRESOURCE(IDI_MAINFRAME)));
    
    m_hicon = AfxGetApp( ) -> LoadIcon ( IDI_ASTERISK ) ;

    return 0 ;
}

void myframe::option_1()
{
    MessageBox("Option 1 gewählt!");
    option=false;
}

void myframe::option_2()
{
    MessageBox("Option 2 gewählt!");
    option=true;
}

void myframe::beenden()
{
    if(MessageBox("Diese Option entfernt nun das Programm\naus der Taskleiste und aus dem Arbeitsspeicher."
        ,"Info",MB_OKCANCEL|MB_DEFBUTTON2|MB_ICONASTERISK)==IDOK){
        m_tray.remove();
        DestroyWindow();
    }
    else return;
}

void myframe::OnUpdateoption_1(CCmdUI* pCmdUI)
{
    if (ismod)
    pCmdUI->Enable(false);    
}

void myframe::OnUpdateoption_2(CCmdUI*pCmdUI)
{
    if (!ismod)
        pCmdUI->Enable(false);
}

/* TrayIcon Message_Map */
BEGIN_MESSAGE_MAP ( TrayIcon, CWnd )
    ON_MESSAGE ( WM_USER + 15, onusermessage )
END_MESSAGE_MAP( )

BOOL TrayIcon::create( CWnd *p, UINT message, LPCTSTR tip, HICON i )
{
    CWnd::CreateEx ( 0, AfxRegisterWndClass ( 0 ), "", WS_POPUP, 0, 0,
                        10, 10, NULL, 0 ) ;

    m_mymenu.CreatePopupMenu( ) ;

    m_mymenu.AppendMenu (MF_STRING, 101, "Option 1" ) ;
    m_mymenu.AppendMenu (MF_STRING, 102, "Option 2" ) ;
    m_mymenu.AppendMenu (MF_SEPARATOR);
    m_mymenu.AppendMenu (MF_STRING, 104, "Beenden" );
    m_mymenu.AppendMenu (MF_SEPARATOR);
    m_mymenu.AppendMenu (MF_STRING, 105, "About" );

    m_nid.cbSize = sizeof ( NOTIFYICONDATA ) ;
    m_nid.hWnd = m_hWnd ;
    m_nid.uID = 1 ;
    m_nid.hIcon = i ;
    m_nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ;
    m_nid.uCallbackMessage = message ;
    strcpy ( m_nid.szTip, tip ) ;

    Shell_NotifyIcon ( NIM_ADD, &m_nid ) ;

    return 0 ;
}

LRESULT TrayIcon::WindowProc ( UINT message, WPARAM w, LPARAM l )
{
    return CWnd::WindowProc ( message, w, l ) ;
}

LRESULT TrayIcon::onusermessage ( WPARAM w, LPARAM l )
{
    CWnd *p = AfxGetMainWnd( ) ;

    if ( LOWORD ( l ) == WM_RBUTTONUP )
    {
        CPoint pos ;
        GetCursorPos ( &pos ) ;
        p -> SetForegroundWindow( ) ;
        setdefault();
        m_mymenu.TrackPopupMenu ( TPM_RIGHTBUTTON, pos.x, pos.y,
                                    p ) ;
        p -> PostMessage ( WM_NULL, 0, 0 ) ;
    }
    else if ( LOWORD ( l ) == WM_LBUTTONDBLCLK )
    {
        p -> SetForegroundWindow( ) ;
        int id = GetMenuDefaultItem ( m_mymenu.m_hMenu, FALSE, 0 ) ;
        p -> SendMessage ( WM_COMMAND, 101, 0 ) ;
    }

    return 0L ;
}

void TrayIcon::setdefault( )
{
    if (isSet()){
        ismod=false;
        ::SetMenuDefaultItem ( m_mymenu.m_hMenu, 101, NULL );
    }
    else {
        ismod=true;
        ::SetMenuDefaultItem ( m_mymenu.m_hMenu, 102,NULL);
    }
}

void TrayIcon::remove()
{
    Shell_NotifyIcon ( NIM_DELETE, &m_nid );
}

BOOL TrayIcon::isSet()
{
    if(!option)
        return false;
    return true;
}



Jetzt der Header

C++:

#if !defined(AFX_TRAYICON_H__B391E3C1_5741_4025_90FC_674FEE956D6D__INCLUDED_)
#define AFX_TRAYICON_H__B391E3C1_5741_4025_90FC_674FEE956D6D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "resource.h"
class myapp : public CWinApp
{
public:
    BOOL InitInstance();
};

class TrayIcon : public CWnd
{
    private :

        NOTIFYICONDATA m_nid ;
        CMenu m_mymenu ;
    
    public :

        int create ( CWnd* p, UINT message, LPCTSTR tip, HICON i ) ;
        virtual LRESULT WindowProc ( UINT message, WPARAM w,
                                        LPARAM l );
        void setdefault();
        void remove();
        BOOL isSet();
        LRESULT onusermessage ( WPARAM w, LPARAM l );

    DECLARE_MESSAGE_MAP( )
};

class myframe : public CFrameWnd
{

    
    private :
        TrayIcon m_tray ;
        HICON m_hicon;
        int m_flag;
    public :
        myframe( ) ;
        int OnCreate ( LPCREATESTRUCT l ) ;
        void about();
        void option_1();
        void option_2();
        void beenden();
        
protected:
    afx_msg void OnUpdateoption_1(CCmdUI* pCmdUI);
    afx_msg void OnUpdateoption_2(CCmdUI* pCmdUI);
    DECLARE_MESSAGE_MAP()
};
#endif // !defined(AFX_TRAYICON_H__B391E3C1_5741_4025_90FC_674FEE956D6D__INCLUDED_)


Viel Spass...
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 10.08.2002 um 12:19 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.08.2002, 16:51 Uhr
~Netbound
Gast


Danke! hat geklappt.

Netbound
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: