Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » newb: Mfc Message prob

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
27.11.2002, 09:36 Uhr
Tara



servus zusammen!

ich habe folgendes prob:

ich möchte eine Button Nachricht (BN_CLICKED) an eine erzeugte Klasse schicken.

ist das möglich ?

Wie ich das verstanden habe muss man die Klasse , die die Nachricht erhalten soll, von z.B. CView ableiten.

wenn ich den Class Wizard starte oder alternativ mit der Klassenansicht eine Behandlungsroutine für Windowsnachrichten hinzufügen möchte, sehe ich aber den Button nicht (ich sehe ihn nur in der Dialogklasse in der der Button erzeugt wurde).

was mache ich falsch ?

thx Tara!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.11.2002, 15:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
1. was für Visual C++ / Visual Studio Version hast du?
2. Dialog-, SDI-, MDI-Anwendung?

P.S. möglich ist alles
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.11.2002, 15:51 Uhr
Tara



hi FloSoft,

Version:

eigentlich brauche ich es für Visual Tools 3.0 embedded.
ich arbeite aber parallel mit Visual Studio 6.0 professional


Anwendung:

Dialog – ich nehme aber auch Tipps für SDI :)


aber weder in VT 3.0 noch in VS 6.0 sehe ich den Button :(

Tara !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.11.2002, 16:08 Uhr
uTaNG



kann du dein Problem n bissel genauer beschreiben?
Du Hast n Button und wenn man denn klickt soll ne Message Box kommen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.11.2002, 17:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Also in einer Dialogfeldanwendung unter VC 6 ists nicht kompliziert, wenn du in der Ressourcenansicht bist (wo du den Button hinzugefügt hast) brauchst du nur auf den Button Doppelklicken, dann fügt er dir Die BN_CLICKED nachricht hinzu, oder du drückst Strg+W für den Klassenassi und wählst da links deinen Button aus und daneben BN_CLICKED und wählst "Benachrichtigung hinzufügen" oder so ähnlich
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.11.2002, 17:14 Uhr
Tommix



Hallo miteinander,
wenn ich's recht verstehe, will Tara die Behandlungsfunktion gerade nicht in der Dialogklasse sondern in einer anderen.

Zitat:

...wenn ich den Class Wizard starte oder alternativ mit der Klassenansicht eine Behandlungsroutine für Windowsnachrichten hinzufügen möchte, sehe ich aber den Button nicht (ich sehe ihn nur in der Dialogklasse in der der Button erzeugt wurde).


Ich würde sagen, das geht so direkt nicht, lasse mich aber gerne eines besseren belehren. Genau genommen muß meine Antwort lauten "Ich weiß auch nicht."


Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.11.2002, 17:28 Uhr
Tara



jo Tommix,
so etwas hatte ich vor

Ich möchte eine WM_USER Nachricht von einer Klasse z.B. CMainDlg zu einer anderen Klasse z.B. CxxxDlg schicken und dort die Nachricht verarbeiten.

Ich kann aus einer Klasse z.B. CxxxDlg eine Nachricht an die Dialogklasse CMainDlg schicken

AfxGetMainWnd()->PostMessage(WM_OUT_RESULT, 0,0) ;

aber ich weis nicht wie ich von der Klasse CMainDlg eine Nachricht an CxxxDlg schicken kann.


Da ich das nicht hinbekommen habe, wollte ich eine Behandlungsroutine für eine Steuerelementnachricht (BN_CLICKED) der Klasse CMainDlg in der Klasse CxxxDlg vom Class Wizard erstellen lassen.

das geht aber auch nicht :(

Tara !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.11.2002, 17:43 Uhr
Tommix



Wenn ich ein bisschen drüber nachdenke, würde ich sagen, dass kann so nicht gehen. Wenn es z.B. 3 Instanzen von CxxxDlg gäbe:
CxxxDlg dlg1, dlg2, dlg3;
Welches Fenster soll dann die Nachricht erhalten? Du mußt die Message wohl doch erst mal in CMainDlg verarbeiten und dann evtl. direkt auf den anderen Dialog zugreifen, also etwa

C++:
CMainDlg::OnButton1()
{
   m_dlg1.DoSomething();
}



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.11.2002, 17:55 Uhr
Volle



Hallo zusammen,

grundsätzlich gehen tut das schon. Wie Flo sagt: Gehen tut (fast) alles. Aber dein Problem ist schon etwas speziell. Deshalb gibt es dafür auch keine Standardlösung. Grundsätzlich kannst du Nachrichten an andere View- Klassen senden mit:


C++:
::PostMessage(Handle, msg, wp, lp)


oder an Threads ohne View mit


C++:
::PostThreadMessage(threadID, msg, wp, lp);


Ob dir das bei deinem konkreten Problem was hilft, weiß ich auch nicht...

Grüße, Volle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.11.2002, 18:06 Uhr
Tara



Besten Dank Tommix!

ich hätte nichts dagegen wenn alle 3 Instanzen die Nachricht verarbeiten würden :)
in meiner Anwendung soll es von dieser Klasse allerdings nur eine Instanz geben.

btw die Klasse CxxxDlg habe ich nur deswegen con CDialog abgeleitet damit der Class Wizard mir einen Message Handler bastelt, aber wenn das nicht funktioniert kann ich das auch bleiben lassen.

Gruß Tara!
 
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: