#include #include #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char *buffer = NULL; HWND hButton1; float Matheparser(char *Text) { int q; int Anzges=0; int klammerlast=0; int klammerendelast=0; int gefunden=0; int ri=0; int endegelaende=0; int anfang=0; int ende=0; int AnzgesErgebnis=0; int Anzgesklammer=0; int k=0; int ii=0; int u=0; int erstgefunden=0; int Klacount=0; int Kla1count=0; int plu=0; float zahl1float=0; float zahl2float=0; float Ergebnis=0; char Rechnung[900]; char teil1[900]; char teil2[900]; char Klammerteil1[900]; char Klammerteil2[900]; char Zahl1string[900]; char Zahl2string[900]; char ergebnisstring[900]; char Klammerrechnung[900]; char neuu[900]; char zwi[900]; char Fehler[]={"°!\"§$%&?`´~#'_;\\@|µ€qwertzuiopüäölkjhgfdsayq;u--) Rechnung[u]=Rechnung[u-1]; Anzges++; Rechnung[q+1]='2'; } if('³'==Rechnung[q]) { Rechnung[q]='^'; for(u=Anzges+1;u>q;u--) Rechnung[u]=Rechnung[u-1]; Anzges++; Rechnung[q+1]='3'; } for(u=0;u hInstance, NULL); free(buffer); SendMessage(hEdit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE); hEdit1 = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "", WS_CHILD | WS_VISIBLE, 20, 130, 400, 20, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); SendMessage(hEdit1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE); return 0; } case WM_COMMAND: { if(lParam == (LPARAM)hButton1)//Berechnen Button wurde gedrückt { int iLength; float Endergebnis; char Ende[1024]; iLength = GetWindowTextLength(hEdit); buffer = malloc(iLength); GetWindowText(hEdit, buffer, iLength+1); Endergebnis=0; Endergebnis=Matheparser(buffer);//Funktion *g* if(Endergebnis!=-111111111)//Es kam zu einem Fehler { sprintf(Ende,"%s=%g",buffer,Endergebnis); SendMessage(hEdit1, WM_SETTEXT, 0,(LPARAM)Ende); UpdateWindow(hEdit1); } strcpy(Ende,""); Endergebnis=0; buffer=NULL; } } break; case WM_CLOSE: { DestroyWindow(hWnd); return 0; } case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, message, wParam, lParam); }