Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Frage zu Findwindow

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
17.08.2002, 13:16 Uhr
Robert



Hallo!
Kann mir jemand sagen wie ich bei FindWindow() nur einen Teil
eines Titels suche? Damit ich z.B. immer wenn die Funktion einen
Teiltitel mit den Text "Editor" findet er mir ne MessageBox
ausgibt und ich nicht immer einen kompletten Titel angeben muss.
Ciao Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.08.2002, 11:01 Uhr
Christian
C/C++ Master
(Operator)


Hi!

So kannst du es nicht machen. Dazu ist dann die Funktion FindWindow nicht geeignet. Eine Möglichkeit ist die Funktion EnumWindows(). Du kannst dort eine CALLBACK Funktionsadresse angeben. Diese Funkiton wird dann immer wieder aufgerufen und du erhältst dort dann die Namen samt Fensterhandles. Du kannst dann dort in dem angegebenen Titel nach deinem Teiltitel suchen.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.08.2002, 17:18 Uhr
Robert



Hallo!
Wie ich die Titel mit EnumWindows() aufrufe weiß ich ja..
Aber wie suche ich nach einen Teiltitel?
Cu Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.08.2002, 11:46 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Dazu kannst du die Funktion strstr() verwenden.
Wenn du z.B. als Titel: "MeineDatei.txt - Editor" hast und du willst wissen ob da "Editor" drin steckt, dann schreib einfach:

if( strstr(Titel, "Editor") )
MessageBox(NULL, "Ist enthalten", "", MB_OK);

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.08.2002, 17:29 Uhr
Robert



Danke!
Ich werde es mal probieren!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.08.2002, 18:16 Uhr
Robert



Hi!
Ich habe es nun endlich hin bekommen, dass es funktioniert!
Jetzt habe ich aber das Problem, dass die EnumWindowsProc-Funktion
eine statische Funktion ist und ich aber aus dieser heraus eine andere
Funktion aufrufen will/muss. Wie bekomme ich das jetzt hin, damit ich
eine nicht statische Funktion aufrufen kann?
--
Ich habe es zwar geschafft die Funktionen aufzurufen (die nicht statischen),
aber da gibt es dann Probleme, weil in diesen Funktionen UpdateData(FALSE);
drin ist!
MfG Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.08.2002, 22:56 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Das Problem kannst du so lösen, dass du der EnumWindows Funktion als lParam den this Zeiger der aufrufenden Funktion übergibst.
Wenn du also die EnumWindowsProg in deiner View Klasse untergebracht hast, dann kannst du folgendes machen:

Aufruf:

C++:
EnumWindows(Funktionsname, (LPARAM)this);



und in der EnumWindowsProg:


C++:
CView* pView = (CView*)lParam;
...

pView->Memberfunktion(..);



wobei die Memberfunktion die Funktion ist, die UpdateData() aufruft.

So muss es funktionieren.

Gruß
Christian
--
Grüße, Christian

Dieser Post wurde am 23.08.2002 um 22:57 Uhr von Christian editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.09.2002, 17:01 Uhr
Robert



Hi!
Da gibt es jetzt noch ein Problem, dass ich dieses (LPARAM)this
schon benutze (mit einer Listbox) und ich rufe mehrere Funktionen
aus der EnumWindowProc-Funktion auf (insgesamt 4).
Wie kann ich 4 LPARAM's übergeben (also mit der EnumWindows()-Funktion)?
MfG Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
01.09.2002, 17:15 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Wenn dir der eine Parameter nicht ausreicht, dann kannst du es ja so machen:
Schreib dir einfach eine Struktur, in die du alle Daten packst und dann übergib nur die Adresse der Struktur. z.B.:

struct WindowStruct
{
int a;
CWnd* pWnd;
CDocument *pDoc;
... (einfach die Variablen die du brauchst)
};

Jetzt kannst du in der Funktion, wo du EnumWindow(..) aufrufst, initialisieren und dann die Adresse der Struktur übergeben.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.09.2002, 17:07 Uhr
Robert



Hi!
Ich weiß nicht, aber ich glaube ich bin zu
doof dafür ! Wie soll ich das übergeben?
MfG Robert
 
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: