OnInitDialog in unterdialog erstellen???
-
Hallo zusammen,
wenn man einen zweiten dialog im Programm erstellt so ist da ja keine
OnInitDialog drin.
Kann mir einer sagen wie ich die OnInitDialog erstelle????
-
na einfach die Dialog-Klasse auswählen und bei den zu überladenten Funktionen die OnInitDialog auswählen. Vorraussetzung ist natürlich das der Dialog an eine Klasse gebunden ist, also du eine Klasse für den neuen Dialog erstellt hast.
-
ok aber welchen Parametertyp und Rückgabetyp muss die OnInitDialog sein?????
ich habe noch ein zweites problem hoffe du kannst mir helfen, möchte für
einen bekannten ein programm das nach auswahl einer pizza in einer List Box
den passenden Preis in ein EditControl schreibtich habe eine ListBox mit CString auswahl und 2 Buttons KLEIN GROß
und ein EditControl mit double preis und sage dann:UpdateData(TRUE); if (auswahl=="SALAMI") { preis1=5.00; } else if ("auswahl==SCHINKEN") { preis2=6.00; } bei dem button groß sage ich dann: UpdateData(TRUE); if (auswahl=="SALAMI") { preis1+2.00; } else if ("auswahl==SCHINKEN") { preis2+3.00; }
Die Preise für die normalen Pizza größen kommen ganz normal aber dann mit den
großen nimmt er immer etwas nach zufall keine Ahnung warum hoffe du hast eine Idee????????????????????????????
-
na weil deine else if falsch geschrieben sind
wenn dann
if (auswahl=="SALAMI") { preis1=5.00; } else if (auswahl=="SCHINKEN") { preis2=6.00; }
wobei 6€ doch recht teuer is
und bei kingsize is das doch nur ne checkbox für die größe das haust du dann drauf, also erhöhst einfach den preis entsprechend, denke ich mal^^
-
na einfach die Dialog-Klasse auswählen und bei den zu überladenten Funktionen die OnInitDialog auswählen. Vorraussetzung ist natürlich das der Dialog an eine Klasse gebunden ist, also du eine Klasse für den neuen Dialog erstellt hast.
Wo wählst du was aus?
-
jimmy0385 schrieb:
ok aber welchen Parametertyp und Rückgabetyp muss die OnInitDialog sein?
Benutze einfach mal die F1 Taste...
Das Forum ist kein Handbuch!Ansonsten:
Deine Shift-Taste ist immer noch kaputt, deine Fragezeichentaste wie auch deine Ausrufezeichnetaste scheinen defekt zu sein. Die prellen unheimlich...
Vermutlich doch mal eine neue Tastatur fällig!
-
die else if sind im programm richtig geschrieben habs nur eben schnell selber hier reingeschrieben weil das programm auf einem anderen rechner war...
die normalen preise nimmt er warum er dann den aufschlag nicht macht weiß ich
nicht....????? deswegen habe ich den code hier gepostet eigentlich ist das
was ganz einfaches....vielleicht ne Idee warum???????
-
na weil du entweder hier schon wieder fehler gepostet hast die im programm dann doch richtig sidn oder dir die grunfdlagen fehlen denn:
UpdateData(TRUE); if (auswahl=="SALAMI") { preis1+2.00; } else if ("auswahl==SCHINKEN") { preis2+3.00; }
ist ja nun mal totaler mist. wenn du schon was drauf addieren willst dann musst du das schon so machen
UpdateData(TRUE); if (auswahl=="SALAMI") { preis1+=2.00; } else if (auswahl=="SCHINKEN") { preis2+=3.00; }
bei deiner variante wird addiert und das ergebnis weg geschmissen, also totaler bullshit
-
der code ist richtig gepostet, habe nun deine änderung vorgenommen jetzt
macht er was anderes... der erste Wert SALAMI funktioniert die nächsten
aber nicht mehr! bei Schinken addiert er wieder den Wert von SALAMI obwohl
UpdateData(TRUE); vorhanden ist scheint er den Wert nicht zu aktualisieren??????????????????????????????????????????
-
vielleicht mal mit dem Debuger schaun was in den Variablen steht könnte helfen und ich hab auch noch gerade meinen Vorherigen Post Korrigiert. du mußt das schon wie oben jetzt geändert in der else if richtig machen sonnst schlägt dein vergleich fehl, oder is das wieder so ein schreibfehler den du nur hier stehen hast? Wenn du uns immer nur Code zeigt der hier falsch gepostet is, dann kann da auch nichts werden
-
hi, dein schreibfehler hab ich bemerkt und korrigiert trotzdem das gleiche!!!!! beim debuggen egal welche pizza ausgewählt ist kommt er nie über das erste if raus wenn ich beim Debuggen auf Schinken Groß gehe:
UpdateData(TRUE); if (auswahl=="SALAMI") { preis1+=2.00; // Hier bleibt der Debugger stehen } else if (auswahl=="SCHINKEN") { preis2+=3.00; }
habs mit UpdateData hin und her probiert aber nichts funktioniert...
PS. den code habe ich gerade verglichen ist absolut identisch....
-
Was ist "auswahl" eigentlich? Mit welchem Control hast du es verbunden?
Texteingabe? Combobox?
-
auswahl ist die CString Variable der List-Box da stehen einträge drin wie Salami und Schinken usw. und wenn man dann mit dem Cursor z.B. Schinken anklickt so soll dann der Preis in einem Edit_Control ausgegeben werden nach drücken des passenden Buttons für die Größe!!!
was er auch für die normalen größen der pizzen macht aber sobald er dann addieren soll ich auf den Button Groß klicke so addiert er immer den ersten Wert von der Salami Pizza...
In meinem Beispiel kostet die normale Schinken Pizza 6.00
wenn ich auf den Button groß klicke sollte er dann 3.00 hinzu addieren
er addiert aber 2.00 hinzu warum auch immer???hab an den rechnungen haltepunkte gesetzt egal aber welche pizza ich dann
anklicke er bleibt immer bei der Salami stehenUpdateData(TRUE); if (auswahl=="SALAMI") { preis1+=2.00; // Hier bleibt der Debugger immer stehen } else if (auswahl=="SCHINKEN") { preis2+=3.00; }
-
aus dem bischen quelltext den du postet, kann ich den fehler nicht nachvollziehen, da müsste man wahrscheinlich das Projekt als ganzes betrachten. Was ich aber nicht versteh warum du Textvergleiche anstellst, anstatt mit dem Index des gewählten Eintrages zu arbeiten, das erspaart dir deine "else if" schreiberei, wenn ich bedenke, das du da 30 verschiedene Pizzen drin hast, das wird dann eine Tolle geschichte, die ganze sache kannst du dann ganz einfach durch eine switch ersetzen, was für dich erstmal der einfachere Weg währe oder warum nutzt du nicht SetItemData() und hinterlegst dort die Preise bezogen auf den Eintrag, also gibt viele bessere Möglichkeiten als das ganze mit 1000 "else if" zu schreiben.
So mal meine Gedanken zu dem Problem und wie man weiter vorgehen kann
-
die funktion switch akzeptiert doch kein double soviel ich weiß!
mit der funktion SetItemData() habe ich noch nicht gearbeitet wäre
super wenn du mir ein beispiel posten könntest damit ich es dann
auf meinem projekt anwenden kann ...werde meine resultate dann posten....
-
wieso soll die switch auch double nehmen macht doch gar keinen Sinn. Ich würde mal sagen dein Gedankenansatz zur Lösung ist falsch.
mit der switch sollst du nur Auswerten welcher Eintrag aus der List-Box gewählt wurde siehe GetSel() und wie man SetItemData() verwendet kann man hier sehen. Da die Beträge für eine Pizza nicht in in die millionen geht, kannst du ganz einfach das Komma 2 Stellen nach rechts verschieben und dann hast du keine Fließkommazahl sondern ne einfache ganzzahl was dann wieder prima bei SetData passt, wenn du jetzt weiter überlegtst, brauchst du keine auswertung mehr, weil du weisst welcher Eintrag gewählt wurde und im Data des Eintrages steht der Preis, fertig is der Bestellschein, rechnen musste dann aber trotzdem noch.