radio= neues Dialogfenster? geht das?

scorpionx

Mitglied
meine frage steht eigentlich schon oben.
wie würde das gehen?
hat jemand von euch eine ahnung?

also es so wie folgt gehen!

ich habe drei radios zur verfügung! und jedesmal wenn man auf den einen klick dann soll dem entsprechend das zugehörige Dialogfenster aufgehen!

gruß und danke
 
Zuletzt bearbeitet:
Selbstverständlich geht das. Füge in der MainFrame für die Radios EreignisHandler für das OnClick-Ereignis ein. In diesen Funktionen rufst du dann den entsprechenden Dialog auf, je nachdem, welcher Button gedrückt wurde. Alternativ kannst du die BOOL-Variable auswerten (wenn du eine definiert hast) und je nachdem sie 0, 1 oder 2 ist, den entsprechenden Dialog öffnen.

Mfg

langer
 
Hallo,
ich gehe mal davon aus, daß deine Buttons Radio1, Radio2 und Radio3 heißen.
Dann hast du in der CMainFrame-Klasse nach dem Einfügen der Handler die drei Funktionen
Code:
void CMainFrame::OnRadio1Clicked()
{
}
void CMainFrame::OnRadio2Clicked()
{
}
void CMainFrame::OnRadio3Clicked()
{
}
Außerdem hast du sicher deine Dialoge entworfen und als Klasse definiert. Ich nenne sie mal CDialog1, CDialog2 und CDialog3. Dann rufst du die Dialoge in deinen Funktionen auf:
Code:
void CMainFrame::OnRadio1Clicked()
{
  CDialog1 dlg1;
  if(dlg1.DoModal()==IDOK)
  {
    //tue das - hier Code einfügen
  }
}
void CMainFrame::OnRadio2Clicked()
{
  CDialog2 dlg2;
  if(dlg2.DoModal()==IDOK)
  {
    //tue jenes
  }
} 
void CMainFrame::OnRadio3Clicked()
{
  CDialog3 dlg3;
  if(dlg3.DoModal()==IDOK)
  {
    //tue noch was
  }
}

Mfg

langer
 
Code:
--------------------Konfiguration: NetSend - Win32 Debug--------------------
--------------------Konfiguration: NetSend - Win32 Debug--------------------
Kompilierung läuft...
BASIS.cpp
C:\Dokumente und Einstellungen\Administrator\Desktop\NETSEND\NetSend\BASIS.cpp(57) : error C2228: Der linke Teil von '.DoModal' muss eine Klasse/Struktur/Union sein
Fehler beim Ausführen von cl.exe.

BASIS.obj - 1 Fehler, 0 Warnung(en)

diese fehlermeldung bekomme ich
 
Zuletzt bearbeitet:
Es wäre hilfreich, wenn du uns den entsprechenden Codeabschnitt auch noch zeigen würdest.

Danke
MCoder
 
Code:
void BASIS::OnRadio1() 
{
	IDD_NAME; IDD_NAME;
	if(IDD_NAME.DoModal()==IDOK)
}

also der erste dialog feld heißt BASIS und der zweite der aufgehen soll wenn man auf radio1 geht heißt IDD_NAME wie ihr schon gesehen habt
 
Zuletzt bearbeitet:
Nein, so geht das nicht.
DoModal ist Member einer Dialog-Klasse. Da kannst du nicht über die ID zugreifen. Du hast deinen Dialog sicher mit dem Dialog-Editor entworfen. Dort hast du ihm die entsprechende ID gegeben. Jetzt mußt du diese Vorlage in eine Klasse umwandeln -> Menu-Punkt Klasse hinzufügen. Dann mußt du, wie in meinem Beispiel in der Funktion eine Instanz der Klasse anlegen. Nehmen wir mal deine ID, dann heißt die Klasse wohl CNamen.
Code:
//Instanz anlegen
CNamen namen;    //jetzt haben wir eine Instanz auf dem Stack
//und jetzt aufrufen
if(namen.DoModal()==IDOK)
  {

  }
Als Hinweis noch:
Die Radio-Button-Klasse dient eigentlich nicht dazu, Ereignisse auszulösen, sondern aus einer Anzahl Vorgaben eine auszuwählen. Dialoge auszuwählen macht man besser über normale Buttons oder das Menu. Aber es geht auch mit den Radios.

Mfg

langer
 
1. Ich hab meinen Dialog kopiert! (damit ich die gleiche struktur habe;muss so sein weil ich bei den anderen die nicht zugehörigen eingabefelder deaktivieren will.


2. ist meine frage: dann ist es doch sinnvoller wenn ich es so mache,
dass wenn man radio1 anklickt der entsprechende eingabefeld aktiviert wird
(wenn man davon ausgeht das ich vorher alle deaktiviert hab!
wär doch einfacher!
nun ist das problem ich hab keine ahnung wie ich felder aktivieren kann
 
Wenn du ein Eingabefeld hast mit der ID IDC_EDIT1, dann kannst du über den Assistenten eine Control-Variable anlegen lassen, nennen wir sie mal m_ctrEdit1.
Darüber kannst du das Eingabefeld steuern, also auch aktivieren oder deaktivieren.
Code:
  m_ctrEdit1.EnableWindow(true);  //Feld wird aktiviert
//oder
  m_ctrEdit1.EnableWindow(false); //Feld wird deaktiviert

Mfg

langer
 

Neue Beiträge

Zurück