WINAPI: Werte aus Editbox einlesen (int/float) | damit rechnen + ausgeben



  • Hallo,
    ich glaub ich bin zu blöd, eine einfache Rechnung mit Winapi durchzuführen.
    Ich möchte, dass der Nutzer 3 Werte einliest, dann auf den Button "Ergebnis" drückt, und das Ergebnis in Feld 4 erscheint.
    Ich glaube mein Problem liegt darin, dass ich die Werte als String einlese, aber als Int oder Float verarbeiten will:

    case ID_BTN_ERG:
                                       {
    
                                       int szErgebnis;
                                       char szKPM[64];
                                       char szKO[64];
                                       char szKR[64];
    								   char onebuffer [256];
    
    								 int kpm = static_cast<int>(szKPM[64]);
              	                     // int ko = static_cast<int>(szKO[512]);
    
                                       GetWindowText (hKPM, szKPM, 64); 
                                      /* SetWindowText (hKPM, szKPM);       
    
                                       GetWindowText (hKR,  szKR, 64 );     
                                       SetWindowText (hKR, szKR);         
    
                                       GetWindowText (hKO, szKO, 64 );     
                                       SetWindowText (hKO, szKO);        
                                       */
    
                                    //  char buffer[1]; 
                                    // GetWindowText(GetDlgItem(hKPM, ID_KPM), buffer, 64); 
    
                                    //  szErgebnis = 100*100;               // geht ...
    
                                   //    szErgebnis = kpm;             // geht nicht
    
                                    szErgebnis = kpm;
    
                                //    szErgebnis = (szKPM[64]*szKR[64]);      // geht nicht
                               //   szErgebnis = (szKPM[+1]*szKR[+1]);      // geht nicht
    
    								sprintf (onebuffer, "%i", szErgebnis);
    
    								  SetWindowText (hTXTERG, onebuffer);          // Rückgabewert, OK
    
                                       }
    

    Kann mir jemand helfen ? Beschäfte mich erst seit gestern mit Winapi, aber die meisten Grundlagen von C++ kann ich.



  • Ein Cast ist auf jedenfall der falsche Weg.

    atoi, sscanf oder sowas suchst du:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html



  • Läuft nicht. Wenn ich per

    GetWindowText (hKPM, szKPM, 64 );
    

    den Wert aus der Editbox holen möchte (nachdem er vom Nutzer eingetragen wurde) sagt er mir immer dass es nen Problem mit dem const char / char gibt.
    Gibt es eine andere möglichkeit einen Integer / Float aus einer Editbox per Button auszulesen ?



  • Unicode-fähiges Beispiel:

    TCHAR wintext[512];
    
    // Zahl als String aus Editbox holen:
    GetWindowText(hWnd, wintext, 512);
    
    // Zeichenkette in Integer umwandeln:
    int zahl=_ttoi(wintext);
    
    // Zahl quadrieren:
    zahl=zahl*zahl;
    
    // Zahl wieder in String umwandeln:
    wsprintf(wintext,TEXT("%i"),zahl);
    
    // Zahl via MessageBox ausgeben:
    MessageBox(0,wintext,TEXT("Ne Zahl"),MB_OK);
    


  • Okay, vielen Dank, hat geklappt. Nur .. wie ist es möglich das Ergebnis der Rechnung in einer Editbox 4 anzuzeigen ? Hab es mit

    SetWindowText ();
    

    versucht, funktioniert nicht.



  • "funktioniert nicht" ist keine Fehlermeldung 😉
    Zeig ein bisschen Quelltext und Fehlermeldungen bzw. beschreib das Verhalten das statt dem gewünschten Ergebnis auftritt, dann kann man helfen 😉



  • Naja danke, läuft jetzt.


Anmelden zum Antworten