Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem mit Enumwindows

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
10.07.2002, 09:49 Uhr
Robert



Hallo!
Ich habe ein Programm geschrieben (für DOS), welches
die Titel der geöffneten Fenster auflistet! Aber ich
wollte es jetzt in ein MFC-Projekt mit einbauen und da
kommt immer eine Fehlermeldung:
error C2664: 'EnumWindows' : Konvertierung des Parameters 1 von 'int (struct HWND__ *,long)' in 'int (__stdcall *)(struct HWND__ *,long)' nicht moeglich

Code des DOS-Programms:


C++:
#include <windows.h>
#include <iostream>
using namespace std;

BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) {
    char String[255];

if (!hWnd)
    return TRUE;
if (!::IsWindowVisible(hWnd))
    return TRUE;
if (!SendMessage(hWnd, WM_GETTEXT, sizeof(String), (LPARAM)String))
    return TRUE;

cout << String << '\n';

return TRUE;
}

int main(int argc, char *argv[], char *envp[]) {
EnumWindows(EnumWindowsProc, NULL);
return 0;
}


Code des MFC-Programms (Nur die Funktion und der Aufruf):


C++:
BOOL CALLBACK COpenWinsDlg::EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
    char String[255];
    CString Title;

if (!hWnd)
    return TRUE;
if (!::IsWindowVisible(hWnd))
    return TRUE;
if (!::SendMessage(hWnd, WM_GETTEXT, sizeof(String), (LPARAM)String))
    return TRUE;

Title.Format("%c", String);
m_cList.AddString(Title);

return TRUE;
}

void COpenWinsDlg::OnReload()
{
    m_cList.ResetContent();
    EnumWindows(EnumWindowsProc, NULL);
}


Kann mir jemand sagen woran das liegt, warum das nicht geht
und wenns bitte auch mit Tipp zum beheben des Problems .
Ciao Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.07.2002, 12:22 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Robert,
definiere Deine Callback als:

C++:
static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);


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

Bis dann...
Uwe

Dieser Post wurde am 10.07.2002 um 12:23 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.07.2002, 12:28 Uhr
Robert



Danke, aber jetzt kommt der Fehler:

C++:
error C2228: Der linke Teil von '.AddString' muss eine Klasse/Struktur/Union sein

Das kommt bei m_cList.AddString(Title);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.07.2002, 13:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Er kennt ja in der static Funktion die Membervariable m_cList nicht!
Das musst du berücksichtigen!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.07.2002, 13:50 Uhr
Robert



Ja das hab ich ja nun auch schon mit bekommen!
Aber wie mach ich das, dass er die Variable auch
erkennt??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.07.2002, 16:09 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Robert,
den hab ich jetzt nicht geprüft, können Tippfehler drin sein

C++:
void COpenWinsDlg::OnReload()
{
    CListBox* pListBox = (CListBox*) GetDlgItem(IDC_LIST1);
    EnumWindows(EnumWindowsProc,(LPARAM)pListBox);    
}

BOOL CALLBACK COpenWinsDlg::EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
    CListBox* pList=(CListBox*) lParam;
    char String[255];
    CString Title;

    if (!hWnd)
        return TRUE;
    if (!::IsWindowVisible(hWnd))
        return TRUE;
    if (!::SendMessage(hWnd, WM_GETTEXT, sizeof(String), (LPARAM)String))
        return TRUE;

    Title.Format("%s", String); // muss %s sein!
    pList->AddString(Title);
    return TRUE;
}


Du mußt den lParam nutzen um deinen Zeiger auf die Listbox zu übergeben.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
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: