Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Compilerfehler

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
20.02.2005, 20:25 Uhr
~Markus_B
Gast


Hallo zusammen,
ich habe bei meinem Prog ein Problem.
Ich habe eine Anwendung geschrieben, wo nach dem tart im Tray ein Icon eingeblendet werden soll.
Das minimieren und anzeigen des Icons im Tray funktioniert auch, aber die Funktion um das Programm wieder zu maximiren klappt nicht. Hier mal der Programmteil:


minimieren: (Wird aus einem Timer aufgerufen)

C++:
void CMessengerDlg::Icon()
{
    char    toolTip[64];

    NOTIFYICONDATA tnd;
    ShowWindow(SW_HIDE);
    ZeroMemory(&tnd, sizeof (NOTIFYICONDATA));
    tnd.cbSize = sizeof (NOTIFYICONDATA);
    tnd.hWnd = this ->m_hWnd;
    tnd.uID = 1;
    tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
    tnd.uCallbackMessage = m_WMChatMessage;
    tnd.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance,
    MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON,
    32,32,LR_SHARED|LR_DEFAULTCOLOR);
    tnd.szTip[*toolTip];
    lstrcpyn(tnd.szTip,"Nachrichtensystem",sizeof(tnd.szTip));
    Shell_NotifyIcon(NIM_ADD,&tnd);
  



maximieren:

C/C++ Code:

C++:
LRESULT CMessengerDlg::OnShowDlg(WPARAM wParam, LPARAM lParam)
{
    if (lParam == WM_LBUTTONDOWN)
    {
        ShowWindow(SW_SHOW);
            NOTIFYICONDATA    tnd;        
            tnd.cbSize = sizeof(NOTIFYICONDATA);    
            tnd.hWnd = this ->m_hWnd;  
            tnd.uID = 1;  
            tnd.uFlags = NIF_MESSAGE|NIF_ICON;
            tnd.uCallbackMessage= m_WMChatMessage;  
            tnd.hIcon = 0;
            tnd.szTip[0] = '\0';    
            Shell_NotifyIcon(NIM_DELETE,&tnd);
            return 1;
    }

    return 0;
}  



Der Funktionsaufruf wird hier vorgenommen.

C++:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
    // Keine Nachrichten-Handler
    //}}AFX_MSG_MAP
ON_MESSAGE(WM_SYSTRAY, OnShowDlg)       // Aufruf
END_MESSAGE_MAP()



Und hier die 2 Fehlermeldungen:

Kompilierung läuft...
OnlinetimerDlg.cpp
CDokumente und Einstellungen\Markus\Desktop\Onlinetimer\OnlinetimerDlg.cpp(62) : error C2065: 'OnShowDlg' : nichtdeklarierter Bezeichner
CDokumente und Einstellungen\Markus\Desktop\Onlinetimer\OnlinetimerDlg.cpp(62) : error C2440: 'type cast' : 'int *' kann nicht in 'long (__thiscall CWnd::*)(unsigned int,long)' konvertiert werden
Es gibt keinen Kontext, in dem diese Konvertierung moeglich ist
Fehler beim Ausführen von cl.exe.


Vieleicht kann mir ja jemand erklären was ich falsch mache.
Danke schon mal im vorraus.


C++:

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.02.2005, 21:04 Uhr
xXx
Devil


Versuch doch mal

C++:
ON_MESSAGE(WM_SYSTRAY, OnShowDlg()) // Da es eine Funktion und keine Variable ist.

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2005, 21:35 Uhr
~Markus_B
Gast


Hab ich schon, geht nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.02.2005, 12:45 Uhr
Tommix



Hallo,
Du hast, glaube ich, die falsche Message Map erwischt:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.02.2005, 18:45 Uhr
~Markus_B
Gast


Ich hab es jetzt mal hier rein gesetzt und bekomme auch keine Fehlermeldung mehr.

C++:

BEGIN_MESSAGE_MAP(COnlinetimerDlg, CDialog)
    //{{AFX_MSG_MAP(COnlinetimerDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
    ON_BN_CLICKED(IDC_SET, OnSet)
    //}}AFX_MSG_MAP
    ON_MESSAGE(WM_SYSTRAY, OnShowDlg)     //Jetzt hier
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COnlinetimerDlg Nachrichten-Handler

BOOL COnlinetimerDlg::OnInitDialog()
{  



allerdings kann ich das Fenster nicht maximieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.02.2005, 23:45 Uhr
mmc20
puss in boots


hi,

welchen inhalt hat denn "m_WMChatMessage" ?
und warum setz denn "ON_MESSAGE(WM_SYSTRAY, OnShowDlg)" auf WM_SYSTRAY ???
wenn dann sollten beide die selbe id verwenden, also:

C++:
ON_MESSAGE(WM_SYSTRAY, OnShowDlg)
//...
tnd.uCallbackMessage = WM_SYSTRAY;


denn so wie's jetzt ist glaub ich nicht das deine "OnShowDlg" überhaupt aufgerufen wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.02.2005, 02:11 Uhr
~Markus_B
Gast


"m_WMChatMessage" ist eigentlich uninteressant, war ein alter Test.
Wäre aner nett wenn Du mir mal genau erklären würdest was Du mit deiner Codezeile meinst.

C++:
ON_MESSAGE(WM_SYSTRAY, OnShowDlg)
//...
tnd.uCallbackMessage = WM_SYSTRAY;      ???




Wo und wie soll das eingefügt werden?

Danke schon mal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.02.2005, 23:35 Uhr
mmc20
puss in boots


hi,
na die muss nicht eingefügt werden, die haste ja schon drin, aber eben bloß mit einer anderen ID

C++:
LRESULT CMessengerDlg::OnShowDlg(WPARAM wParam, LPARAM lParam)
{
    if (lParam == WM_LBUTTONDOWN)
    {
        ShowWindow(SW_SHOW);
            NOTIFYICONDATA    tnd;        
            tnd.cbSize = sizeof(NOTIFYICONDATA);    
            tnd.hWnd = this ->m_hWnd;  
            tnd.uID = 1;  
            tnd.uFlags = NIF_MESSAGE|NIF_ICON;
            tnd.uCallbackMessage = m_WMChatMessage; // <-- hier
// sollte die selbe ID sein wie sie in der MessageMap steht
// also : "tnd.uCallbackMessage = WM_SYSTRAY;"
// wenn "ON_MESSAGE(WM_SYSTRAY, OnShowDlg)" in der MeaasageMap
            tnd.hIcon = 0;
            tnd.szTip[0] = '\0';    
            Shell_NotifyIcon(NIM_DELETE,&tnd);
            return 1;
    }

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.02.2005, 00:13 Uhr
~Markus_B
Gast


Nochmal das Prog


C++:
BEGIN_MESSAGE_MAP(COnlinetimerDlg, CDialog)
    //{{AFX_MSG_MAP(COnlinetimerDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
    ON_BN_CLICKED(IDC_SET, OnSet)
    //}}AFX_MSG_MAP
    ON_MESSAGE(WM_SYSTRAY, ShowDlg)

END_MESSAGE_MAP()





C++:
LRESULT COnlinetimerDlg::ShowDlg(WPARAM wParam, LPARAM lParam)
{
                                       MessageBox("HALLO");   //  1.Versuch
if (lParam == WM_LBUTTONDOWN)
    {
                                                 MessageBox("HALLO");  //  2.Versuch

            ShowWindow(SW_SHOW);
            NOTIFYICONDATA    tnd;        
            tnd.cbSize = sizeof(NOTIFYICONDATA);    
            tnd.hWnd = this ->m_hWnd;  
            tnd.uID = 1;  
            tnd.uFlags = NIF_MESSAGE|NIF_ICON;
            tnd.uCallbackMessage= WM_SYSTRAY;  
            tnd.hIcon = 0;
            tnd.szTip[0] = '\0';    
            Shell_NotifyIcon(NIM_DELETE,&tnd);
            return 1;
    }

    return 0;
}




Also ich bekomme zwar keine Fehlermeldungen mehr, aber ich glaube die Funktion ShowDlg
wird garnicht aufgerufen,
Habe mal einen Test mit der Message Box gemacht.
Wenn ich die Funktion "per Hand aufrufe "ShowDlg(1,2); " wird die Anwendung nicht maximiert und die MessageBox kommt nur im 1. Versuch aber mit der Maus passiert nix.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.02.2005, 00:55 Uhr
mmc20
puss in boots


hi, ja klar... wenn dann musst schon "showDlg(0, (LPARAM)WM_LBUTTONDOWN)" aufrufen.

aber mal was anderes, das "tnd.uCallbackMessage= WM_SYSTRAY;" sollte auch schon vorher (also beim einstellen des icon ins systray) so aussehen.
also hier:
C++:
void CMessengerDlg::Icon()
{
    char    toolTip[64];

    NOTIFYICONDATA tnd;
    ShowWindow(SW_HIDE);
    ZeroMemory(&tnd, sizeof (NOTIFYICONDATA));
    tnd.cbSize = sizeof (NOTIFYICONDATA);
    tnd.hWnd = this ->m_hWnd;
    tnd.uID = 1;
    tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
//******************************************
    tnd.uCallbackMessage = m_WMChatMessage; // FALSCH !!! WM_SYSTRAY = RICHTIG !!!
//******************************************
    tnd.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance,
    MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON,
    32,32,LR_SHARED|LR_DEFAULTCOLOR);
    tnd.szTip[*toolTip];
    lstrcpyn(tnd.szTip,"Nachrichtensystem",sizeof(tnd.szTip));
    Shell_NotifyIcon(NIM_ADD,&tnd);



Dieser Post wurde am 24.02.2005 um 00:56 Uhr von mmc20 editiert.
 
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: