Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CSliderCtrl werte setzen

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
02.07.2008, 14:40 Uhr
cmos



Hallo,
in meinem Hauptdialog habe ich einen Schieberegler. Die Startposition und den
Wertebereich setze ich in OnInitDialog() mit
Slider.SetPos(0);
Slider.SetRange(0,255);
usw.

Das funktioniert auch alles. Ich habe noch einen zweiten Dialog, der aus dem Hauptdialog aufgerufen wird. Dort habe ich ebenfalls einen Schieberegler und auch die Methode
OnInitDialog. Wenn ich dort allerdings die Werte setzen möchte, funktioniert das nicht.
Ich bekomme immer eine Fehlermeldung und das Programm stürtzt ab bzw. wird mit einem
Fehlerdialog beendet.

Meine Frage ist nun, warum es im Hauptdialog funktioniert und in dem anderen nicht ?
Und wie ich die Werte setzen kann.

Grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.07.2008, 15:21 Uhr
mmc20
puss in boots


hi, wie wird der zweite dialog aufgerufen, modal/nicht modal bzw. wie wird er erzeugt?
zb: CZweitDlg* pDlg = new CZweitDlg(); pDlg->Create(...); geht nicht, da bereits beim create die OnInit... aufgerufen wird, und zu dem zeitpunkt die dlg-controls noch nicht existent sind.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.07.2008, 15:50 Uhr
cmos



Hallo,
der Dialog wird Modal aufgerufen.
z.b. so
CMeinDialog dlg;

if(dlg.DoModal() == IDOK)
{

}

Ich hatte für den Schieberegler eine Variable angelegt. Dann dort in der OnInitDialog die Werte zu ändern ging nicht. Also habe ich eine eine Zeiger vom Typ
CSliderCtrl angelegt und über GetDlgItem mir den Slider geholt. Die Werte konnte ich nun ändern. Das Problem mit den Variablen habe ich aber auch wenn der Dialog schon zu sehen ist. Wenn ich dann an dem Schieberegler herumspiele kann ich nicht mit
.GetPos() die Position abrufen sondern geht das nur wieder über den Zeiger auf diesen Schieberegler.

Danke,
cmos

Dieser Post wurde am 02.07.2008 um 15:50 Uhr von cmos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.07.2008, 16:36 Uhr
Tommix



Hallo,
wenn Du eine int-Variable angelegt hast mußt Du UpdateData aufrufen, um deren Wert in das Control bzw. zurück zu übertragen.
Gruß, Tommix

Bearbeitung:

Wenn ich's mir in Gänze durchlese, hat mein Kommentar wohl nichts mit dem Problem zu tun. Ist einfach zu heiß heute...


Dieser Post wurde am 02.07.2008 um 16:38 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.07.2008, 16:53 Uhr
mmc20
puss in boots


also, GetDlgItem holt dir (laut msdn) nur einen temporären zeiger ! das heisst der ist irgendwann nicht mehr gültig bzw. zeigt sonstwo hin.
 
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: