Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Mehreren Optionsfeldern eine Funktion zuweisen

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 < [ 2 ]
000
31.07.2002, 21:58 Uhr
pvjb



Hallo,

wie weist man mehreren Optionsfeldern die gleiche Funktion als Klickereignis zu?

Im Visual C++ Kurs (www.mut.com/media/buecher/VCPLUS6/data/kap08.htm) steht etwas von

"Wie Sie mittlerweile wissen, können alle Optionsfelder die gleiche Funktionalität für ihre Klickereignisse verwenden. Somit genügt eine einzige Behandlungsroutine für das Klickereignis aller Optionsfelder. In dieser Behandlungsfunktion synchronisieren Sie die Klassenvariablen mit den Steuerelementen des Dialogfelds durch Aufruf der Funktion UpdateData und weisen dann das zweite Dialogfeld mit Hilfe seiner Funktion Invalidate an, sich selbst neu zu zeichnen. Mit dem Code in Listing 8.3 erstellen Sie eine einzige Behandlungsroutine, die diese beiden Dinge erledigt."


Dann folgt:

C++:
void CGrafikDlg::OnRSelection()
{
// TODO: Code für die Behandlungsroutine der Steuerelement- ÂBenachrichtigung hier einfügen

// Daten synchronisieren
UpdateData(TRUE);
// Zweites Dialogfeld neu zeichnen
m_dlgPaint.Invalidate();
}



Ehrlich gesagt habe ich überhaupt keine Ahnung, wie das wirklich gehen soll!


Tschüss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.07.2002, 22:47 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Aktivier mal beim ersten Optionsfeld bei den Eigenschaften "Gruppe". Dann gehören z.B. Pinsel, Stift, Bitmap in eine Gruppe. Du brauchst dann nur mehr auf "Stift" eine Controlvariable deklarieren (Klassenassi). Die nehmen dann folgende Werte an:
"Stift" = 0
"Pinsel" = 1
"Bitmap" = 2

mfg mike
PS: Du musst für dein Optionsfeld eine ON_COMMAND Funktion deklarieren (KLassenassi) -> OnRSelection
--

Dieser Post wurde am 31.07.2002 um 22:48 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.07.2002, 22:50 Uhr
ChrisMa



Hallo pvjb,

versuch doch einfach den verschiedenen Optionsfeldern die gleiche ID zu geben.


C++:
    //{{AFX_MSG_MAP(CGrafikDlg)
    ON_COMMAND(ID_EVENT, RSelection)
    //}}AFX_MSG_MAP

// Ohne Semikolon, da Makro..



Jetzt einfach jedem Optionsfeld "ID_EVENT" zuweisen.
--
Gruß,
Christian

Dieser Post wurde am 31.07.2002 um 22:56 Uhr von ChrisMa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.08.2002, 10:49 Uhr
pvjb



Hallo,

ich glaube mike hat recht! Ich wusste halt nur nicht, dass bei Gruppe auch alle gleich das gleiche Klickereignis haben!

Tschüss und Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.08.2002, 16:58 Uhr
pvjb



Hallo,

das scheint wohl nicht so ganz zu funktionieren, kann mir nicht mal jemand kurz nur erklären was der Autor in dem Buch damit meint?

Tschüss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.08.2002, 20:22 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Invalidate sendet an Widows nur eine Nachricht, damit OnDraw nochmals aufgerufen wird.
Zu den Radios: Füg einfach drei Radios ein: IDC_RADIO1, IDC_RADIO2, IDC_RADIO3. IDC_RADIO1 gibst du dann den Name IDC_RSELECTION.
IDC_RSELECTION Gruppe ein
IDC_RADIO2 unverändert
IDC_RADIO3 unverändert
Dann gehst du in den Klassenassistent. In der ersten Registerkarte siehst du alle in deinem Dialog befindlichen Steuerelemente. Such dir IDC_RSelection raus. Rechts daneben ist eine Liste mit ON_COMMAND und ON_COMMAND_UI. Doppelklick auf ON_COMMAND. Der Assi schlägt dir "OnRSelection" vor -> OK. Dann gehst du auf Code bearbeiten und fügst deinen Source ein.

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.08.2002, 12:38 Uhr
~Tobi
Gast



Zitat:
pvjb postete
Hallo,

wie weist man mehreren Optionsfeldern die gleiche Funktion als Klickereignis zu?



im bsp von mike wird nur ein Radiobutton mit einem Command-Ereigniss verknüpft.

du musst mit ON_BN_CLICKED zwischen BEGINN_MESSAGE-MAP und END_MESSAGE_MAP den anderen radios auch noch ein Ereigniss hinzufügen


Code:
BEGIN_MESSAGE_MAP(CBLaDlg, CDialog)
    //{{AFX_MSG_MAP(CBlaDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_RSELECTION, OnRselection)
    ON_BN_CLICKED(IDC_RADIO2, OnRselection)
    ON_BN_CLICKED(IDC_RADIO3, OnRselection)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()



mfg

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.08.2002, 14:23 Uhr
pvjb



Hallo,

Tobis Lösung ist zu kompliziert, der Clou ist doch, das ich allen das gleiche automatisch zuweise!

Mike, deine Lösung ist ja genau das gleiche wie du vorher geschrieben hattest! Ich brauche die ID nicht IDC_RSELECTION nennen, das würde auch so gehen. Allerdings ist doch mein Problem, dass das halt nicht funktioniert, nachdem ich das Programm compiliert habe!

Kennt jemand das Buch vielleicht, und kann mir sagen was ich machen muss? Das ist sicher nur ein kleines Häkchen im Klassenassisten oder so!

Tschüss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.08.2002, 14:33 Uhr
Tommix



Hallo,


Zitat:
pvjb postete

Das ist sicher nur ein kleines Häkchen im Klassenassisten oder so!

Tschüss



Ich fürchte, ganz so simpel ist das nun doch nicht. Wenn ich mich recht entsinne, war das so gemeint:
Du rufst im Klassenassi "Funktion hinzufügen" für das erste Optionsfeld auf. Der vorgeschlagene Funktionsname ist z.B. "OnOption1". Den ersetzt Du durch "OnRSelection". Dann machst Du das gleiche für die anderen Felder und gibst als Funktionsnamen immer wieder "OnRSelection" an. Das läuft vom Resultat her auf Tobis Variante hinaus.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.08.2002, 14:54 Uhr
pvjb



Hallo,

du hast jetzt nur tobias Lösung für den Klassenassi umgeschrieben. Aber ich suchte etwas wie mike ansatzweise geschrieben hat. Allerdings funktioniert das nicht. Aber vielleicht geht es ja wirklich nur so! Ist ja auch egal. Ich dachte nur, dass der Autor des Buchs sich vielleicht etwas dabei gedacht hat!


Tschüss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: