Hintergrund in Fenstern ändern. ( C++ )



  • Super danke aber wenn meine funktionen so aussehen:

    case WM_CREATE :
    		HGDIOBJ h = LoadImage(NULL, "C:\\Users\\TS Tim\\Pictures\\Wise.bmp",
                                    IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE);
            if(h == NULL) 
    		{  // call GetLastError.
    			MessageBox( hWnd, "bild konnte nicht geladen werden.", "Error", MB_OK);
    		}
            HDC hdc = GetDC( hWnd );
            CreateCompatibleDC( hdc );
    		break;
    	case WM_ERASEBKGND :
    		StretchBlt( hdc, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT,
                        hdc, rect.left, rect.top, rect.right, rect.bottom, SRCINVERT );
            DeleteDC( hdc ); 
    		break;
    

    Dann kommen diese Fehler meldungen:

    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(91): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(88): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(91): error C2360: Initialisierung von 'h' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(82): Siehe Deklaration von 'h'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(96): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(88): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(96): error C2360: Initialisierung von 'h' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(82): Siehe Deklaration von 'h'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(100): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(88): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(100): error C2360: Initialisierung von 'h' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(82): Siehe Deklaration von 'h'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(105): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(88): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(105): error C2360: Initialisierung von 'h' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(82): Siehe Deklaration von 'h'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(110): error C2361: Initialisierung von 'hdc' durch 'default'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(88): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(110): error C2361: Initialisierung von 'h' durch 'default'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(82): Siehe Deklaration von 'h'
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Und die grig ich nicht weg. Ich weis zwar schon was es bedeutet aber nicht wie ich den Code ändern muss das die weggehen 😞 ...



  • { } wirken Wunder...



  • 👍

    dot schrieb:

    { } wirken Wunder...



  • cppfan schrieb:

    Super danke aber wenn meine funktionen so aussehen:

    case WM_CREATE :
    		HGDIOBJ h = LoadImage(NULL, "C:\\Users\\TS Tim\\Pictures\\Wise.bmp",
                                    IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE);
            if(h == NULL) 
    		{  // call GetLastError.
    			MessageBox( hWnd, "bild konnte nicht geladen werden.", "Error", MB_OK);
    		}
            HDC hdc = GetDC( hWnd );
            CreateCompatibleDC( hdc );
    		break;
    	case WM_ERASEBKGND :
    		StretchBlt( hdc, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT,
                        hdc, rect.left, rect.top, rect.right, rect.bottom, SRCINVERT );
            DeleteDC( hdc ); 
    		break;
    

    Die meisten von mir bereits angemerkten Fehler sind noch drin; einige neue
    hinzugekommen. Leider bist Du nicht mal in der Lage den von mir geposteten
    Code vollständig zu kopieren. So eine "{" steht nicht zufällig im Code ...

    Der Handle h macht da wo Du ihn jetzt hingepackt hast keinen Sinn. Der Hinweis
    mit dem Rückgabewert CreateCompatibleDC ist sicher NICHT optional ...

    Offensichtlich weisst Du absolut nicht was das Code überhaupt machen soll,
    obwohl Du bereits mehrere Links zu funktionierendem Code hast.

    Ich habe unter solchen Voraussetzungen keine Lust das weiter zu kommentieren.



  • Hat sich schon jemand den Titel des Fensters hinein gezogen? In Zeile 9 im ersten post... 🙄



  • Nun Wie du bereits erwähnt hast weis ich wirklich nicht was der code soll meine Frage War ja auch wie ich es Hin bekomme das sich die bilder ebn nicht aneinander reien sondern nur vergrösert oder verkleinert werden.

    ach und -lowbyte- wen du JaRk meinst das hab ich blos so auf der Tastatur getipt und als n kumpel ( der Jan heist )meinte es hiese bestimt "Jan Riecht komisch" hab ich das so dofgefunden das ich das einfach so hingeschrieben hab 🤡 ...



  • cppfan schrieb:

    .... meine Frage War ja auch wie ich es Hin bekomme das sich die bilder ebn nicht aneinander reien sondern nur vergrösert oder verkleinert werden.

    Auch schon gesagt mit StretchBlt. Du musst nur die Grössen des Bildes (bmp) und des Fensters im aktuellen Zustand abfragen und einsetzen.



  • Es wäre mir zwar recht wenn es mit eurer Metohte funktioniert und ihr noch ein mal der ganze Code wenn ihr meint das es so richtig ist oder was mache ich jetzt noch falsch :

    // eigenes Fenster.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <Windows.h>
    
    const char szClassName[] = "MyClassEx";
    	  char szTitle[] = "Fenster NO 1. | Copyright by JaRk Producktion © 2012";
    
    LRESULT CALLBACK WndProc ( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
    
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance , LPSTR szCmdLine, int szCmdShow )
    {
    
    	WNDCLASSEX WndClassEx;
    	HWND hWnd;
    	MSG msg;
    
    	//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°RESTRIERUNG°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°//
    	WndClassEx.cbSize = sizeof( WndClassEx );
    	WndClassEx.style  = NULL;
    	WndClassEx.lpfnWndProc = WndProc;
    	WndClassEx.cbClsExtra = NULL;
    	WndClassEx.cbWndExtra = NULL;
    	WndClassEx.hInstance = hInstance;
    	WndClassEx.hIcon = LoadIcon( NULL, IDI_ERROR );
    	WndClassEx.hCursor = LoadCursor( NULL, IDC_HAND );
    	WndClassEx.hbrBackground = NULL;
    	WndClassEx.lpszMenuName = NULL;
    	WndClassEx.lpszClassName = szClassName;
    	WndClassEx.hIconSm = LoadIcon( NULL, IDI_APPLICATION);
    
    	if( !RegisterClassEx( &WndClassEx ))
    	{
    		MessageBoxA(NULL, "Registrierungs Fehler!          ", "Error		", MB_OK);
    		return false;
    	}
    	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FENSTER ERSTELLEN ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
    	hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
    						  szClassName,
    						  szTitle,
    						  WS_OVERLAPPEDWINDOW | WS_THICKFRAME,
    						  CW_USEDEFAULT,
    						  CW_USEDEFAULT,
    						  CW_USEDEFAULT,
    						  CW_USEDEFAULT,
    						  NULL,
    						  NULL,
    						  hInstance,
    						  NULL);
    	if (hWnd == NULL) {
    		MessageBoxA( NULL, "Fenster konnte nicht erstellt werden", "Error", MB_OK);
    		return false;
    	}	   
    
    	ShowWindow( hWnd, szCmdShow );
    	UpdateWindow( hWnd );
    
    	while ( GetMessage ( &msg, hWnd, NULL, NULL) > NULL )
    	{
    		TranslateMessage( &msg );
    		DispatchMessage( &msg );
    	}
    
    	return 0; 
    }
    
    LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
    {
    
    	HGDIOBJ h;
    
    	switch (msg)
    	{
    	case WM_SIZE :
    		RECT rect;
    		GetClientRect( hWnd, &rect ); 
    		break;
    	case WM_CREATE : {
            h = LoadImage(NULL, "C:\\Users\\TS Tim\\Pictures\\Wise.bmp",
                                    IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);
    		if(h == NULL) {  
    			GetLastError();
    		}
    		HDC hdc = GetDC( hWnd );
            CreateCompatibleDC( hdc );
    		break;
    	case WM_ERASEBKGND :
            StretchBlt( hdc, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT,
                        hdc, rect.left, rect.top, rect.right, rect.bottom, SRCINVERT );
            DeleteDC( hdc );
            break;
    	case WM_RBUTTONDOWN :
    		MessageBox( NULL, "Rechte Maustaste ;)", "Super", MB_OK);
    		break;
    
    	case WM_QUIT:
    		MessageBoxA( NULL, "Programm wurde beendet.", "ENDE ;)", MB_OK);
    		DestroyWindow ( hWnd );
    		break;
    
    	case WM_DESTROY:
    		PostQuitMessage(0);
    
    		break;
    
    	default:
    		return DefWindowProc(hWnd, msg, wParam, lParam );
    	}
    }
    

    ach und es kommen die Fehler:

    1>------ Erstellen gestartet: Projekt: eigenes Fenster, Konfiguration: Debug Win32 ------
    1> eigenes Fenster.cpp
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(92): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(89): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(97): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(89): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(101): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(89): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(106): error C2360: Initialisierung von 'hdc' durch 'case'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(89): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(111): error C2361: Initialisierung von 'hdc' durch 'default'-Marke übersprungen
    1> c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(89): Siehe Deklaration von 'hdc'
    1>c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(115): fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "c:\users\ts tim\documents\visual studio 2010\projects\eigenes fenster6\eigenes fenster\eigenes fenster.cpp(73)" gefunden wurde
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    ach und so neben bei wo sollen Die hin {} ???????? 😞 😞

    Ich bin so wütent ( auf mich ) 😡
    ich glaub irgentwie das das einfach nicht in meinen Schädel will 😡



  • cppfan schrieb:

    Nun Wie du bereits erwähnt hast weis ich wirklich nicht was der code soll meine Frage War ja auch wie ich es Hin bekomme das sich die bilder ebn nicht aneinander reien sondern nur vergrösert oder verkleinert werden.

    ach und -lowbyte- wen du JaRk meinst das hab ich blos so auf der Tastatur getipt und als n kumpel ( der Jan heist )meinte es hiese bestimt "Jan Riecht komisch" hab ich das so dofgefunden das ich das einfach so hingeschrieben hab 🤡 ...

    Wie bitte? Ach so... Wie schreibt ihr bei euch das Wort das nach Deinem Namen kommt?



  • Nach meinem kommt gar kein Wort nur nach seinem auserdem darf man sich ja mal vertippen.

    Und wenn du keine Lösungs vorschläge hast würde ich es sehr beglücken wenn du keine Kommentare mehr abgibst.


Anmelden zum Antworten