Wer macht mir eine kleine GUI für mein Programm?



  • Nur mal schnell zusammengezimmert - sieht daher nicht besonders aus 😉

    #include <windows.h>
    
    #define ID_INPUT	1
    #define ID_OUTPUT	2
    #define ID_BUTTON	3
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    long unsigned int vielfaches (long unsigned int eingabe); 
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
       static TCHAR szAppName[] = TEXT ("Klassenname");
       HWND         hwnd;
       MSG          msg;
       WNDCLASSEX   wndclassex = {0};
    
       wndclassex.cbSize        = sizeof(WNDCLASSEX);
       wndclassex.style         = CS_HREDRAW | CS_VREDRAW;
       wndclassex.lpfnWndProc   = WndProc;
       wndclassex.cbClsExtra    = 0;
       wndclassex.cbWndExtra    = 0;
       wndclassex.hInstance     = hInstance;
       wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
       wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW);
       wndclassex.hbrBackground = (HBRUSH) GetStockObject (LTGRAY_BRUSH);
       wndclassex.lpszMenuName  = NULL;
       wndclassex.lpszClassName = szAppName;
       wndclassex.hIconSm       = wndclassex.hIcon;
    
       if (!RegisterClassEx (&wndclassex))
       {
          MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"), szAppName, MB_ICONERROR);
          return 0;
       }
    
       hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil
                      szAppName, // Name der Fensterklasse
                      TEXT ("Fenstertitel"), // Fenstertitel
                      WS_OVERLAPPEDWINDOW, // Fensterstil
                      CW_USEDEFAULT, // X-Position des Fensters                      
                      CW_USEDEFAULT, // Y-Position des Fensters       
                      320, // Fensterbreite                 
                      90, // Fensterhöhe                
                      NULL, // übergeordnetes Fenster
                      NULL, // Menü           
                      hInstance, // Programm-Kopiezähler (Programm-ID)            
                      NULL); // zusätzliche Parameter
    
       ShowWindow (hwnd, iCmdShow);
       UpdateWindow (hwnd);
    
       while (GetMessage (&msg, NULL, 0, 0))
       {
          TranslateMessage (&msg);
          DispatchMessage (&msg);
       }
       return msg.wParam;
    }
    
    // Die Hauptnachrichtenschleife
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       switch (message)
       {
       case WM_CREATE:
          CreateWindow("EDIT","",WS_VISIBLE|WS_CHILD|WS_BORDER,20,20,80,20,hwnd,(HMENU)ID_INPUT,((LPCREATESTRUCT)lParam)->hInstance,0);
          CreateWindow("EDIT","",WS_VISIBLE|WS_CHILD|WS_BORDER,110,20,80,20,hwnd,(HMENU)ID_OUTPUT,((LPCREATESTRUCT)lParam)->hInstance,0);
          CreateWindow("BUTTON","Berechnen",WS_VISIBLE|WS_CHILD|WS_BORDER,210,20,80,20,hwnd,(HMENU)ID_BUTTON,((LPCREATESTRUCT)lParam)->hInstance,0);
          return (0);
    
       case WM_COMMAND: 
          switch (LOWORD(wParam))  
    	  {  
            case ID_BUTTON:
    		{
              UINT zahl = GetDlgItemInt(hwnd,ID_INPUT,NULL,FALSE); 
              UINT erg  = vielfaches(zahl); 
              SetDlgItemInt(hwnd,ID_OUTPUT,erg,FALSE); 
              return (0); 
    		} 
    	  }
    	  break;
    
       case WM_DESTROY:
          PostQuitMessage (0);
          return (0);
       }
    
       return DefWindowProc (hwnd, message, wParam, lParam);
    }
    
    long unsigned int vielfaches (long unsigned int eingabe) { 
        long unsigned int zahl = 0; 
    
        //Wenn kleiner 24, Zahl zurückgeben 
        if (eingabe < 24) return eingabe;  
    
        //So lange eingabe größer als 0 ist, das vielfache suchen 
        while (eingabe > 0) { 
        //Eingabe durch 24 Teilen, die Ganzzahl in zahl darauf mit 24 multiplizieren 
       // Wenn Sie der Eingabe entspricht ist es ein vielfaches von 24 
        zahl = eingabe/24; 
        if (zahl * 24 == eingabe) return eingabe; 
        eingabe--; 
        }
    }
    


  • ich würde die edit's noch auf ES_NUMBER setzen



  • Vielen Dank, ist wirklich nett von dir.
    Bekomme beim Linken, aber folgenden Fehler:

    [Linker error] undefined reference to `GetStockObject@4'



  • Gdi32.lib mitlinken



  • Wo finde ich die und wie linke ich die mit?
    mit #include <gdi32.lib> geht es nicht, er findet sie auch nicht.

    Finde in einem Unterverzeichnis eine libgdi32.a aber die kann ich nicht über
    #include <libgdi32.a> einbinden.



  • Wie das bei Dev C++ geht kann ich dir leider nicht sagen, da verschiebe ich dich mal 😉



  • Du kannst mich doch nicht einfach so abschieben 😉
    Hast du die Möglichkeit das Topic zu ändern?Ist jetzt irgendwie unpassend.

    Mein Problem mit Dev C++ :
    Ich habe mir die komplette Dev C++ Distribution heruntergeladen(die mit Compiler),
    wie kann ich die gdi32.lib in mein Programm linken?



  • Wenn du deinen ersten Beitrag editierst kannst du imho den Titel ändern 🙄



  • Da war ich aber nocht nicht registriert.



  • habe zwar auch keinen devcpp, aber irgendwo gibt es da glaub ich etwas mit

    Load Object files

    dann die lib mitlinken... aber liest einfach mal die hilfe zu deiner ide.. ist sicher ein faq mit dabei.



  • Perfekt, habe es in der Hilfe gefunden.Und das programm funktioniert einwandfrei 🙂
    Vielen Dank.


Anmelden zum Antworten