Win32 App. Text im Fenster ausgeben???



  • Hallo Leute!

    Programmiere noch nicht so lange an einer Win32 Applikation.

    Nun möchte ich Hauptfenster eine Text ausgeben, bzw. einen Integer Wert.

    Bsp.: X = 15

    Dieser wert soll laufend erneuert werden wenn sich die Variable ändert.

    Wie funktioniert sowas? Der Text soll oben-links im Fenster ausgegeben werden.

    Gruß
    WAR][FIRE





  • Oder auch ein STATIC-Fenster und entsprechend updaten.



  • Mit Text Out hat es jetzt geklappt.

    Allerdings updatet sich dich Zahl nicht!

    case WM_PAINT:
                 //Setzte Greifer zu!
                    Z++; //Gucken ob sich zahl updatet
                   length = sprintf(temp,"Z = %f",Z);
    
                   hdc = BeginPaint (hwnd, &ps) ;
                   GetClientRect (hwnd, &rect) ;
                   TextOut (hdc, pos, pos, temp, length) ;
                   EndPaint (hwnd, &ps) ;
                  // UpdateWindow (hwnd) ;
                   Beep(1000,100);
                 break;
    

    Das auskommentierte UpdateWindow(hwnd) bringt auch nichts.

    Muss man noch irgendwas beachten?

    EDIT: Mal die ganze Funktion:

    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        int zDelta=0;
        int Z =0;
    HDC hdc ;
    PAINTSTRUCT ps ;
    RECT rect ;
    char zeichen[30] = {"Z = "};
    char temp[20]= {' '};
    int length;
    int pos = 20;
    
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
    
            case WM_PAINT:
                 //Setzte Greifer zu!
                   length = sprintf(temp,"Z = %f",Z);
    
                   hdc = BeginPaint (hwnd, &ps) ;
                   GetClientRect (hwnd, &rect) ;
                   TextOut (hdc, pos, pos, temp, length) ;
                   EndPaint (hwnd, &ps) ;
                  // UpdateWindow (hwnd) ;
                   Beep(1000,100);
                 break;
    
       //Bewegungsteuerung!
    
    //=========================
    
            case WM_MOUSEWHEEL:
                 zDelta = GET_WHEEL_DELTA_WPARAM(wParam); //<-- Wenn positiv wurde das Rad nach vorne gedreht, wenn negativ wurde es nach hinten gedreht.(120-er Schritte)
                 if( zDelta > 0 && true/*MOVE ACHSEN*/)  {Z--; Beep(500,100);/*MessageBox(hwnd,"Scroll hoch","Z--",MB_OK);*/}
                 if( zDelta < 0 && true/*MOVE ACHSEN*/)  {Z++; Beep(5000,100);/*MessageBox(hwnd,"Scroll runter","Z++",MB_OK);*/}//Vom Feeling her logischer [scrollrad nach oben = Roboter geht hoch]
    
    //Bewegungsteuerung! ENDE
    
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    

    Gruß
    WAR][FIRE



  • Ein Fenster wird immer nur neu gezeichnet, wenn es nötig ist. Heißt, wenn du ein Neuzeichnen herbeiführen willst, musst du das explizit angeben, z.B. mit der Funktion "InvalidateRect".



  • Sauber, das funktioniert! Danke!!! 🙂


Anmelden zum Antworten