Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wm erstellen

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
26.07.2002, 10:18 Uhr
~ektoplasma2000
Gast


Ich versuche jetzt schon seit einiger Zeit WM_ICH_WILL_FLIEGEN bei mir einzubauen.
Ich habe bis jetzt :

ON_WM_ICH_WILL_FLIEGEN(OnFly)
#define WM_ICH_WILL_FLIEGEN 12902
afx_msg void OnFly();
void CMeinDlg::OnFly()
{

}

in mein Programm eingebunden, aber ich bekomme in der Zeile
ON_WM_ICH_WILL_FLIEGEN(OnFly)
den Fehler :
error C2065: 'ON_WM_ICH_WILL_FLIEGEN' : nichtdeklarierter Bezeichner

was mache ich falsch ? was ahbe ich vergessen ?

Vielen dank für eure mühen !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.07.2002, 10:37 Uhr
~christian
Gast


hallo ektoplasma2000,

> #define WM_ICH_WILL_FLIEGEN 12902

ok.

> afx_msg void OnFly();

.. wenn es in der .h bei den AFX_MSG's liegt auch ok.

> ON_WM_ICH_WILL_FLIEGEN(OnFly)

hier sehe ich auch deinen fehler, ich denke da du ja ein messagehandle erstelen möchtest, musst du es auch in die messagemap legen.

d.h. in deiner .cpp datei unter BEGIN_MESSAGE_MAP.. einfach
ON_COMMAND(ON_WM_ICH_WILL_FLIEGEN, OnFly)

ohne semikolon wohlgemerkt, da makro


viel glück und gruß aus bonn,
christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.07.2002, 11:21 Uhr
~ektoplasma2000
Gast


Vielen dank, das klappt nun wunderbar,

aber wie kann ich nun diese Funktion aus einem anderen Programm aufrufen ???

Weil bei

::PostMessage((::FindWindow(NULL,"olert")),WM_ICH_WILL_FLIEGEN,,0);

erfolgt keine reaktion
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.07.2002, 12:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo du musst dann (glaub ich) folgendes machen:


C++:
::PostMessage((::FindWindow(NULL,"olert")),WM_COMMAND,WM_ICH_WILL_FLIEGEN);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.07.2002, 12:21 Uhr
~ektoplasma2000
Gast


Leider nein !
Es passiert nichts !
void wird nicht erreicht !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.07.2002, 15:33 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Probier mal aus ob er überhaupt dein Fenster findet:


C++:
HWND hwnd = ::FindWindow(NULL,"olert");
if(hwnd)
{
  ::PostMessage(hwnd, WM_COMMAND, WM_ICH_WILL_FLIEGEN, 0);
}
else
{
  AfxMessageBox("Fehler: Fenster nicht gefunden");
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.07.2002, 12:26 Uhr
~Tobi
Gast


Mann kann auch die WM_COMMAND beim ::PostMessage weglassen. Man überschreibt einfach seine WindowProc, dann braucht man auch nur eine ganz simple Funktion ohne OnCommand und son gschmari. außerdem kann bei bedarf dann noch zwei parameter mitgeben. Ob das fenster existiert sollte man trotzdem überprüfen. Ich hab die Erfahrung gemacht, dass er ohne Klassenname (NULL) nix findet. Wenn du das prog selber schreibst kannst du ja den Klassennamen leicht rauskriegen (bei MFC is des immer ne raute und irgend eine zahl)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.07.2002, 07:05 Uhr
~ektoplasma2000
Gast


OK ich habe jetzt einmal überprüft, ob das Fenster vorhanden ist und leider liegt der Fehler nicht da, weil er das Fenster findet.
Doch reagieren tut es nicht.


@ Tobi
Wie soll das ohne COMMAND funzen ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.07.2002, 14:28 Uhr
~Tobi
Gast


Also ich hab des jetzt mal bei mir getestet:

Anwendung 1:

Code:
void CErsterDlg::Fly()
{
HWND wnd=::FindWindow(klasse,name);
if(::IsWindow(wnd))
{
::SendMessage(wnd,5000,parameter1,parameter2);/*man kann auch eine andere nachricht nehmen, parameter können auch einfach durch irgendwelche zahlen erzetzt werden*/
}
else
{
AfxMessageBox("Kein Fenster gefunden");
}
}



in der zweiten anwendung überschreibst du mit hilfe des klassenassis die WindowProc. Dann schreibst du rein:


Code:
if(message==5000)
{
OnFly(wParam,lParam);//oder ohne parameter!
}




mfg
Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.07.2002, 15:23 Uhr
~ektoplasma2000
Gast


Jo so klappt es nun, vielen Dank !!!!
 
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: