Schrift?



  • Hi,
    Frage1:
    ich hab eine Frage und zwar sieht man wenn man diesen Code eingibt, dass der Hintergrund schwarz ist, und die schrift auch, aber warum ist dort so ein weiser rand.
    wie kann man dem wegmachen?
    Frage2:
    Wie kann man die schriftart endern?(z.B. Times new Roman)
    Bedanke mich für jede Antwort.
    Der Code:

    // Headerdatei
    #include <windows.h>
    
    //Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    
    // Das Fensterhandle
    HWND hWnd = 0;
    
    // Windows main-Funktion
    int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                       HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                       LPSTR lpCmdLine,          // Kommandozeile
                       int nCmdShow)             // Art wie das Fenster angezeigt werden soll
    {
    
       WNDCLASSEX wndClass;                                   // WNDCLASSEX Struktur
    
        // Struktur initialisieren
        wndClass.cbSize        = sizeof(WNDCLASSEX);           // Größe angeben (nie vergessen!)
        wndClass.style         = CS_DBLCLKS | CS_OWNDC |
                                 CS_HREDRAW | CS_VREDRAW;      // Standard Stile
        wndClass.lpfnWndProc   = MessageHandler;               // Die Callback Funktion angeben
    
        wndClass.cbClsExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.cbWndExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.hInstance     = hInstance;                    // Anwendungsinstanz
    
        wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);  // Weisser Pinsel
        wndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);  // Normaler Cursor
        wndClass.lpszMenuName  = NULL;                         // Das Fenster hat kein Menü
        wndClass.lpszClassName = "WindowClass";                // Der Name der Klasse
        wndClass.hIcon         = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
        wndClass.hIconSm       = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
    
        RegisterClassEx(&wndClass);
    
        hWnd =  CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                              "WindowClass",          // Klassenname
                              "Das Fenster",        // Fenstertitel
                              WS_OVERLAPPEDWINDOW |   // Fenster
                              WS_VISIBLE,             // Eigenschaften
                              0, 0, 800, 600,     // Anfangsposition und Größe
                              NULL,                   // Handle des Elternfensters
                              NULL,                   // Handle des Menüs
                              hInstance,              // Anwendungsinstanz
                              NULL);                  // wird nicht benötigt
    
       // Struktur, in der Informationen zur Nachricht gespeichert werden
        MSG msg;
    
        // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
    
       while(GetMessage(&msg,NULL,0,0))
       {
              // Nachricht an die Callbackfunktion senden
             TranslateMessage(&msg);
             DispatchMessage(&msg);
        }
    
        // Rückgabewert an Windows
        return 0;
    }
    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // für Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        // testen, um welche Nachticht es sich handelt
        switch(msg)
        {
            // wenn das Fenster geschlossen wird, eine Nachricht senden,
            // die das Programm beendet
            case WM_DESTROY:
                        PostQuitMessage(0);
          case WM_PAINT:
             PAINTSTRUCT ps;
             HDC hDC;
    
             hDC = BeginPaint(hWnd,&ps);
             SetTextColor(hDC,RGB(0,0,0));
             // Der Anfang -------------------------------------------------------------------------------
             TextOut(hDC,0,0,"Danke für Hilfe",15);
    
             EndPaint(hWnd,&ps);
    
             return 0;
                    break;       
        }
       // Wenn wir uns nicht um die Nachricht gekümmert haben
        // wird sie an die Standardnachrichtenverarbeitung von Windows
        // geschickt
        return (DefWindowProc(hwnd, msg, wParam, lParam));
    }
    

    edit: Codetags.

    [ Dieser Beitrag wurde am 05.02.2003 um 13:54 Uhr von cd9000 editiert. ]



  • Die Hintergrundfarbe kann man über:

    wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH) ändern.
    Wenn man (BLACK_BRUSH) z.B. durch (GRAY_BRUSH)ersetzt wird der Hintergrund grau.
    Den Rand kann man wahrscheinlich durch verschiedene WindowStyles ersetzen, z.B. statt WS_OVERLAPPED WS_POPUP. Eine Liste der verschiedenen Styles gibts im MSDN.

    [ Dieser Beitrag wurde am 04.02.2003 um 19:49 Uhr von J.G.Systems editiert. ]



  • Ach ich meinte doch nicht den Rand vom Fenster ich meinte den Rand um die schrift, der Hintergrund soll aber schwarz bleiben, wie endert man die Farbe um die schrieft, das ist ja weis, wie macht man das schwarz???



  • Du könntest es mal mit SetBkMode(hDC, TRANSPARENT); probieren...

    cya 🙂



  • Ja, das funktioniert, Danke für die Hilfe, weis jemand noch wie man die schrieftart noch endert?



  • Oder geht das garnicht?



  • Such mal nach CreateFont, z.B. hier


Anmelden zum Antworten