Dialogfeldbasierende MFC Anwendung
-
Hey,
ich habe hier ein Projekt am laufen, in dem ich ein Programm schreiben muss, welches den Frequenzgang einer Impedanz darstellt.
Wir haben gerade erst vor 4 Wochen angefangen, dialogfeldbasierend zu programmieren. Wir arbeiten mit Microsoft Visual C++ 6.
Und ich finde es ziemlich schwierig.Das eigentliche Programm sollte nicht so schwierig sein, da es nur anhand verschiedener Frequenzen die Impedanz Z = R + jwL + 1/(jwC) ausrechnen soll.
Nun habe ich aber ein wenig Probleme, mich in dem dialogfeldbasierendem Programmieren zurecht zufinden.
Die Grafik für das Dialogfeld hab ich alles erstellt bekommen, jedoch ist dies wahrscheinlich nicht mal 5% der ganzen Arbeit.
Mein erstes Problem, auf dass ich gestoßen bin, ist, mit ComboBoxen zu arbeiten.
Ich soll dort Frequenzen im Bereich von 0 - 10000 Hz in 100 Hz-Schritten zur Auswahl darstellen. Nun wäre es eine Heidenarbeit, dies alles in den Eigenschaften der ComboBox reinzueditieren.
Ich hab gehört dass es mithilfe einer for-Schleife einfach zu realisieren sei.Der Professor gab mir folgende Hilfe (bin mir jedoch sicher, dass da was falsch ist):
char szText [MAXTEXT];
for (int i=0; i <= 10000; i=100)
{
szText ("%ld Hz", i);
}Erstmal.. wo wird das hingeschrieben? In OnInitDialog() vllt?
Nun weiß ich zB auch nicht, wo diese MagicNumber MAXTEXT deklariert wird?!Kann mir da wer helfen?
Ich weiß hier nicht mehr weiter.Gruß,
Shadow Link
-
Hi!
OnInitDialog ist eine gute Stelle, aber nach dem Aufruf der Basisklasse, sonst gehts schief.

MAXTEXT würde ich im Header deklarieren. Allerdings gruselt es mich irgendwie, dass kein CString benutzt wird. Aber der Prof wirds schon wissen...

-
mh.. wie gesagt, er hat es so ungefähr geschildert, kann mich an den genauen Wortlaut nicht mehr entsinnen.
Dachte, hier gäb es einen, dem das bekannt vorkäme und es mir berichtigen könnte.
Und in welcher Header Datei von den 4en, die ich im Dialogfeldbasierdenen Programm hab, meinste?
FILENAME.h ?
-
Wenn Du weißt wie du eine Wert in die Combo schreibst ist es doch einfach.
Die Schleife erzeugt Zahlen in 100er Schritten.CString Combowert("0"); for (int i=0; i <= 10000; i=100) { Combowert.Format("%i Hz", i) // Hier steht nun im CString eine Zahl und diese schreibst Du in die Combo // Dies passiert solange i >= 10000 }
-
Unix-Tom schrieb:
for (int i=0; i <= 10000; i=100)Ist die Endlosschleife eine pädagogische Maßnahme?

-
Hmm..
nun hab ich das mal eingefügt (wobei ich immer noch nicht weiß, wohin GENAU ich das eigentlich schrieben muss?!) und das Programm lässt sich nicht mehr debuggen, auch nach erneutem Löschen nicht mehr.
Blödes Visual Studio da...
Kannst mir vllt sagen, wo ich das hinschreiben muss?
Vllt in:
BOOL CTEST2Dlg::OnInitDialog()
{....
String Combowert("0");
for (int i=0; i <= 10000; i=100)
{
Combowert.Format("%i Hz", i)// Hier steht nun im CString eine Zahl und diese schreibst Du in die Combo
// Dies passiert solange i >= 10000}
}?
-
estartu schrieb:
Unix-Tom schrieb:
for (int i=0; i <= 10000; i=100)Ist die Endlosschleife eine pädagogische Maßnahme?

Na eigentlich schon denn ich habe das nur von ihm kopiert. Ist mir jetzt so gar nicht aufgefallen.

-
ShadowLink schrieb:
Hmm..
nun hab ich das mal eingefügt (wobei ich immer noch nicht weiß, wohin GENAU ich das eigentlich schrieben muss?!) und das Programm lässt sich nicht mehr debuggen, auch nach erneutem Löschen nicht mehr.
Blödes Visual Studio da...
Nix für ungut, aber nur weil Du Dich intellektuell überfordert fühlst, musst Du das nicht auf Visual Studio schieben.
Kannst mir vllt sagen, wo ich das hinschreiben muss?
Vllt in:
BOOL CTEST2Dlg::OnInitDialog()
{....
String Combowert("0");
for (int i=0; i <= 10000; i=100)
{
Combowert.Format("%i Hz", i)// Hier steht nun im CString eine Zahl und diese schreibst Du in die Combo
// Dies passiert solange i >= 10000}
}
?Ja. Und in die CComboBox bekommst Du es mit AddString(). Ansonsten: schau mal bei http://www.coding-help.de/hilfe.html vorbei, das hat mich auch gehelft

-
thx
-
Unix-Tom schrieb:
estartu schrieb:
Unix-Tom schrieb:
for (int i=0; i <= 10000; i=100)Ist die Endlosschleife eine pädagogische Maßnahme?

Na eigentlich schon denn ich habe das nur von ihm kopiert. Ist mir jetzt so gar nicht aufgefallen.

Das hat er glaub ich noch nicht geschnallt was ihr damit sagen wolltet. Ich würde das so machen (ungetestet):
BOOL CTEST2Dlg::OnInitDialog() { .... CString Combowert=_T(""); int j=0; for (int i=0; i <= 10000; i=i+100) { Combowert.Format(_T("%i Hz"), i); m_DeineComboBox.InsertString(j,Combowert); j++; } }