C API edit control Hintergrundfarbe

Diskutiere C API edit control Hintergrundfarbe im Developer Network Forum im Bereich Hardware & Software Forum; Hi, habe folgende Frage, da ich im Inet bisher nichts brauchbares gefunden habe. Ich möchte die Hintergrundfarbe eines edit controls ändern. Die...
  • C API edit control Hintergrundfarbe Beitrag #1
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Hi, habe folgende Frage, da ich im Inet bisher nichts brauchbares gefunden habe.
Ich möchte die Hintergrundfarbe eines edit controls ändern. Die Standart Weiß Farbe ist mir allmählich zu blöd und mit einer anderen Farbe sieht es einfach besser aus.
Leider finde ich im Internet lediglich so Dinge, wie den Hitergrund verändern, über den schon Text geschrieben wurde. Sprich ich schriebe zur Hälfte ins edit und habe auhc nur zur Hälfte schwarz(in meinem Falle, es soll eine Art Eingabeaufforderung werden).
Lösche ichd ann den Text wieder wird es wieder weiß.

Meine Frage, wie ändere ich dauerhaft die Hintergrundfarbe und am besten auch die Textfarbe für dieses edit control. Gibts da irgenwelche default Werte, die ich speziell für ein edit control ändern kann?

MfG
Anno1989
 
  • C API edit control Hintergrundfarbe Beitrag #2
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
vll hilft dir das weiter, ka hab nur kurz gegoogelt WM_CTLCOLOR , maybe auch canvas.
 
  • C API edit control Hintergrundfarbe Beitrag #3
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Ich verstehe die Anwendung dabei leider nicht.
Ich habe zwei Edit Conrols in diesem Fenster, eins soll nromal weiß bleiben, das zwiete eben schwarz, wenn ich nun aber diese Nachricht bearbeite (abgesehen davon, dass es irgendwie nicht klappt) ändere ichd ann nicht die Hintergrundfarbe aller Edit. ?
Kann ich nicht einfach in der WM_CREATE festlegen, dass das edit mit dem namen bla eine andere Hitergrundfarbe hat?
 
  • C API edit control Hintergrundfarbe Beitrag #4
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
google einfach hbrush, edit feld einfärben ^^ sry kb atm zu coden
 
  • C API edit control Hintergrundfarbe Beitrag #5
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Okay, hat nun geklappt:
Code:
	case WM_CTLCOLORSTATIC:
		{
		
		if(hEdit1==(HWND)lParam)
	       {
		   SetBkMode ((HDC) wParam, TRANSPARENT);
		   {	
			    SetTextColor((HDC) wParam, ColorWeiss);
			  	return (LRESULT)hBrushSchwarz;		   
		    }
		}
	   
			return 0;
		}

Danke für deine Hilfe.
 
  • C API edit control Hintergrundfarbe Beitrag #6
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
ich grab mal den alten thread aus :p.
immerhin passt es in die gegend. hat jemand eine ahnung, wie man ein edit control transparent macht?
 
  • C API edit control Hintergrundfarbe Beitrag #7
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Was genau meinst du mit Transparent, sowas?
Grade auf anhieb bei google gefunden und in der Doku nachgesehen:
Code:
int SetBkMode(
  HDC hdc,      // handle to DC
  TRANSPARENT  // background mode 
);
 
  • C API edit control Hintergrundfarbe Beitrag #8
O

O Love

Bekanntes Mitglied
Dabei seit
08.04.1999
Beiträge
2.286
Reaktionspunkte
0
Alternativ kannst Du mit WM_ERASEBACKGRND rumspielen und dort einfach nüscht machen.
 
  • C API edit control Hintergrundfarbe Beitrag #9
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
yo k ty :)
 
  • C API edit control Hintergrundfarbe Beitrag #10
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Um das Thema mal wieder aufzugreifen, wie Ändere ich die Text und Hintergrundfarbe eines Buttons oder einer in ein ListenFenster eingebauten Scrollleiste? Das Listenfenster selber kriege ich ohne weiteres bearbeitet, leider die Scrollbar nicht, ebenso wenig wie die Buttons. Kann ich irgendwo die Standardfarben (Text: Schwarz Hintergrund. Ka- Grau?) Ändern oder muss ich mir jeden einzelnen Button selber malen?
 
  • C API edit control Hintergrundfarbe Beitrag #11
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Keiner ne Ahnung, wie ich diese Blöde Farbe ändere? Ich google schon die ganze Zeit über immer wieder danach nur irgendwie.
 
  • C API edit control Hintergrundfarbe Beitrag #12
O

O Love

Bekanntes Mitglied
Dabei seit
08.04.1999
Beiträge
2.286
Reaktionspunkte
0
IMHO gilt ohne besonderes Zutun immer das eingestellte Windows-Theme. Willst Du was anderes, mußt Du selber malen.
 
  • C API edit control Hintergrundfarbe Beitrag #13
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Okay, das habe ich dann auch mal gemacht:
Zuerst einmal die Farben des Buttons definieren, hab ich nach den Includes(nennt man die so?) gemacht:
Code:
//Farben
const COLORREF BTNBG = RGB(0, 155, 100);              //Button Hintergrund
const COLORREF BTNBGONCLICK = RGB(0, 200, 100);  //ButtonHintergrund bei Klick
const COLORREF BTNFRAME = RGB(0, 0, 0);  //Button Rahmen Farbe
const COLORREF BTNFRAMEONCLICK = RGB(50, 50, 50);  //Die Rahmenfarbe bei Klick
const COLORREF TEXTCOLOR = RGB(0,0,0);   //Text Farbe
const COLORREF TEXTCOLORONCLICK = RGB(50,50,50); //Text Farbe bei Klick
//Habe die Farben einfach mal willkürlich gewählt

//Für die ButtonProcFunktion (oder wie soll man das nennen?)
char szButton[] = "ButtonKlasse";
LRESULT CALLBACK ButtonWndProc (HWND, UINT, WPARAM, LPARAM) ;

Code:
//Hier zwei Funktionen dazu, schaffe es noch nicht das ganz in eine eigene Headerdatei zu stecken, sodass das alles nicht im Hauptquelltext stehen muss:
void RegisterButtons(HINSTANCE hInstance) {
	 WNDCLASS wndclass;
	 wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) CreateSolidBrush(BGCOLOR) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpfnWndProc   = ButtonWndProc ;
     wndclass.hIcon         = NULL ;
     wndclass.lpszClassName = szButton;
     RegisterClass (&wndclass);

}
HWND CreateButton(char* Title, int xPos, int yPos, int iWidth, int iHeight, HWND hWnd, HINSTANCE hInstance)
{
return CreateWindow (szButton, Title, WS_CHILD | WS_VISIBLE, xPos, yPos, iWidth, iHeight,hWnd,NULL,hInstance,NULL);
}
Die Funktion zum Registrieren der FensterKlasse muss wie es aussieht vor der WM_CREATE Nachricht des Hauptfensters aufgerufen werden, sonst werden normale Buttons angezeigt.
Einfach per:
Code:
RegisterButtons(hInstance);
vor der CreateWindow() Funktion des Hauptfensters aufrufen oder einfach so in WM_CREATE an den Anfang packen:
Code:
WM_CREATE:
{RegisterButtons(((LPCREATESTRUCT) lParam) -> hInstance);
//Sonstige Aufrufe
return 0;
}

Wenn ihr das soweit habt kommt halt die ButtonProc Funktion rein:
Code:
LRESULT CALLBACK ButtonWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC         hDC = GetDC(hWnd);
	PAINTSTRUCT ps ;
	RECT        rect ;
	char cAButtonText[255];


	switch (message)
	{
	case WM_LBUTTONDOWN :
		{
			//Im folgenden wird der Button etwas verändert dass er wirklich aussieht als hätte man ihn geklickt ^^
			GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);	//Text des Fensters ermitteln
			GetClientRect (hWnd, &rect);				//Button Rechteck ermitteln

			DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBGONCLICK)));			//Background bei Klick einsetzen
			DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, 1, BTNFRAMEONCLICK)));	//Pen einsetzen für denButton Rahmen
			RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5);						//Button mahlen 
			SetBkMode(hDC, TRANSPARENT);
			SetTextColor(hDC, TEXTCOLORONCLICK);										//Text Farbe bei Klick
			DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER); //Text platzieren
			return 0 ;
		}
	case WM_LBUTTONUP:
		{
			GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);		//Text des Fensters ermitteln
			GetClientRect (hWnd, &rect);									//Button Rechteck ermitteln

			DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));		//Normalen ButtonHintergrund einsetzen
			DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, 2, BTNFRAME)));	//Normalen Rahmen einsetzen
			RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ;				//Wieder den Button mahlen
			SetBkMode(hDC, TRANSPARENT);
			SetTextColor(hDC, TEXTCOLOR);										//Text Farbe bei Klick
			DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);	//Wieder Text malen

			SendMessage(GetParent(hWnd), WM_COMMAND, BN_CLICKED, (LPARAM)hWnd);	//WM_COMMAND Nachricht an das Parent Window senden
			return 0 ;
		}

	case WM_PAINT :
		//Quasi wie bei WM_LBUTTONUP
		GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);
		hDC = BeginPaint (hWnd, &ps) ;

		GetClientRect (hWnd, &rect);

		DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));
		DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, 2, BTNFRAME)));
		RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ; 
		SetBkMode(hDC, TRANSPARENT);
		SetTextColor(hDC, TEXTCOLOR);
		DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);
		EndPaint (hWnd, &ps) ;
		return 0 ;
	}
	return DefWindowProc (hWnd, message, wParam, lParam) ;
}
Aufgerufen wird der Button so (habe mich mal an CreateWindow Orientiert:
Code:
     case WM_CREATE :
		 {	
	hButton_Test = CreateButton("Test1", 10, 10, 100, 25, hWnd, ((LPCREATESTRUCT) lParam) -> hInstance);			
          return 0;
		 }
Habe das unter den restlichen Code gesetzt.
Nun "solltet" ihr in der Lage sein die eigenen Buttons zu verwenden, habe sie mal mit RoundRect() gemalt. Es gibt bisher noch nichts, in Richtung SetWindowRegion() sprich, wnen man RoundRect durch durch eine Ellipse austauschen würde, so könnte man den Button auch in dem so entstehenden "Freiraum" außenrum anklicken, weil das Fenster Rechteckig ist, da muss ich gucken, wie das noch geht.

Ansonsten: Idee kam mir durch das im Petzold Buch beschriebene Checker4 Programm. Hoffe ihr könnt mit meinem Wirrwarr etwas anfangen. Bei mir klappt es gut und sieht besser aus als die Grauen Windoof Buttons.
Das Einzige wäre vielleicht, dass man das noch irgendwie in eine extra Datei packt, die man nur zum Projekt hinzufügt und somit sich auf die Funktionsaufrufe beschränken kann und nicht LRESULT CALLBACK ButtonWndProc() immer mitschleppen muss.

Edit: Der Button sendet eine normale WM_COMMAND Nachricht, die man wie bewohnt in WM_COMMAND auswerten kann.
Kompilliert mit Visual Studio C++ Express 2005.
 
Zuletzt bearbeitet:
  • C API edit control Hintergrundfarbe Beitrag #14
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Das hilft jetzt zwar nicht direkt bei deinem Problem weiter, aber bedenke, dass es kaum etwas gibt, das den meisten Computerbenutzern mehr auf den Sender geht als Programme, die sich nicht an eingestellte Styles halten und partout anders aussehen wollen (oder noch schlimmer: ähnlich aussehen, aber sich anders verhalten ;) ProE ist da ein gutes Beispiel). Sowas hatten wir damals zu DOS-Zeiten, als jedes Programm sein eigenes Interface hatte, und diese Zeit ist nicht ohne Grund Vergangenheit. ;)
Kommt aber natürlich auf den Typ von Programm an; bei einem Spiel z.B. machen sich Standard-Styles wohl nicht so gut, aber normale Anwendungsprogramme und Tools sollten sich schon so verhalten, wie man es erwartet, und ein halbwegs einheitliches Aussehen haben. Wenn ich da an gewisse Virenscanner denke, die mit Skin-Support aufwarten ... ich meine, wtf, wer lässt sich bloß sowas einfallen...
 
  • C API edit control Hintergrundfarbe Beitrag #15
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Nein, keine Sorge, ich habe so ca. eine Hand voll eigener "Tools" wie ichs mal nenne will. Die wollte ich einfach mal grafisch ein bisschen besser gestalten, dachte mir ich Poste es mal, vielleicht kann es irgendjemand, der genauso verzweifelt im Internet gesucht hat wie ich das ja gebrauchen. ;)
Ich wieß zwar jetzt nicht direkt wovon du redest aber einleuchtetnd ist es. ;)
 
  • C API edit control Hintergrundfarbe Beitrag #16
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Sorry für Doppelpost, hier noch ein kleiner Nachtrag, dass sich die Buttons auch vom Klick verhalten so verhalten wie normale Buttons (Sprich wnen geklickt ist und die Maus bewegt sich außerhalb des Buttons wird keine WM_COMMAND Nachricht gesendet:
Auch WM_ENABLE und WM_SETTEXT noch hinzugefügt dass die richtig funktionieren:

Code:
//Ein paar neue Konstanten
const COLORREF BTNBGDISABLED = RGB(0, 0, 0);
const COLORREF BTNFRAMEDISABLED = RGB(0, 60, 160);
const COLORREF TEXTCOLORDISABLED = RGB(0,60, 175);

const int FRAMESIZE = 1;

//Neuer Code, das registrieren der Fensterklasse läuft nach wie vor unverändert ab:
LRESULT CALLBACK ButtonWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC         hDC = GetDC(hWnd);
	PAINTSTRUCT ps ;
	RECT        rect ;
	char cAButtonText[255];

	switch (message)
	{
	case WM_ENABLE:
		{
			if(wParam == TRUE) {				//Window Enable
				GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);		//Text des Fensters ermitteln
				GetClientRect (hWnd, &rect);									//Button Rechteck ermitteln

				DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));		//Normalen ButtonHintergrund einsetzen
				DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAME)));	//Normalen Rahmen einsetzen
				RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ;				//Wieder den Button mahlen
				SetBkMode(hDC, TRANSPARENT);
				SetTextColor(hDC, TEXTCOLOR);										//Text Farbe bei Klick
				DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);	//Wieder Text malen

			}
			else if(wParam == FALSE) {			//Window Disable
				GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);		//Text des Fensters ermitteln
				GetClientRect (hWnd, &rect);									//Button Rechteck ermitteln

				DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBGDISABLED)));		//Normalen ButtonHintergrund einsetzen
				DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAMEDISABLED)));	//Normalen Rahmen einsetzen
				RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ;				//Wieder den Button mahlen
				SetBkMode(hDC, TRANSPARENT);
				SetTextColor(hDC, TEXTCOLORDISABLED);										//Text Farbe bei Klick
				DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);	//Wieder Text malen

			}
			return DefWindowProc (hWnd, message, wParam, lParam);
		}
	case WM_SETTEXT:
		{
			sprintf_s(cAButtonText, sizeof(cAButtonText)-1, "%s", lParam);
			GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);		//Text des Fensters ermitteln
			ReleaseCapture();												//Maus Capture aus
			GetClientRect (hWnd, &rect);									//Button Rechteck ermitteln

			DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));		//Normalen ButtonHintergrund einsetzen
			DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAME)));	//Normalen Rahmen einsetzen
			RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ;				//Wieder den Button mahlen
			SetBkMode(hDC, TRANSPARENT);
			SetTextColor(hDC, TEXTCOLOR);										//Text Farbe bei Klick
			DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);	//Wieder Text malen
			InvalidateRect(hWnd, 0, FALSE);
			return DefWindowProc (hWnd, message, wParam, lParam);
		}
	case WM_LBUTTONDOWN :
		{
			//Im folgenden wird der Button etwas verändert dass er wirklich aussieht als hätte man ihn geklickt ^^
			GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);	//Text des Fensters ermitteln
			GetClientRect (hWnd, &rect);				//Button Rechteck ermitteln
			SetCapture(hWnd);

			DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBGONCLICK)));			//Background bei Klick einsetzen
			DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAMEONCLICK)));	//Pen einsetzen für denButton Rahmen
			RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5);						//Button mahlen 
			SetBkMode(hDC, TRANSPARENT);
			SetTextColor(hDC, TEXTCOLORONCLICK);										//Text Farbe bei Klick
			DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER); //Text platzieren
			return 0 ;
		}
	case WM_LBUTTONUP:
		{	
			RECT rect;
			int xPos = LOWORD(lParam);
			int yPos = HIWORD(lParam);
			GetClientRect(hWnd, &rect);
			GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);		//Text des Fensters ermitteln
			GetClientRect (hWnd, &rect);									//Button Rechteck ermitteln

			DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));		//Normalen ButtonHintergrund einsetzen
			DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAME)));	//Normalen Rahmen einsetzen
			RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ;				//Wieder den Button mahlen
			SetBkMode(hDC, TRANSPARENT);
			SetTextColor(hDC, TEXTCOLOR);										//Text Farbe bei Klick
			DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);	//Wieder Text malen
			ReleaseCapture();
			
			if((yPos < rect.top) || (yPos > rect.bottom) || (xPos > rect.right) || (xPos < rect.left)) {			
				return 0;
			}
			SendMessage(GetParent(hWnd), WM_COMMAND, BN_CLICKED, (LPARAM)hWnd);	//WM_COMMAND Nachricht an das Parent Window senden
			return 0 ;
		}

	case WM_PAINT :
		//Quasi wie bei WM_LBUTTONUP
		GetWindowText(hWnd, cAButtonText, sizeof(cAButtonText)-1);
		hDC = BeginPaint (hWnd, &ps) ;

		GetClientRect (hWnd, &rect);

		DeleteObject(SelectObject(hDC, CreateSolidBrush(BTNBG)));
		DeleteObject(SelectObject(hDC, CreatePen(PS_SOLID, FRAMESIZE, BTNFRAME)));
		RoundRect(hDC, 0, 0, rect.right, rect.bottom, 5, 5) ; 
		SetBkMode(hDC, TRANSPARENT);
		SetTextColor(hDC, TEXTCOLOR);
		DrawText(hDC, cAButtonText, (int)strlen(cAButtonText), &rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);
		EndPaint (hWnd, &ps) ;
		return 0 ;
	}
	return DefWindowProc (hWnd, message, wParam, lParam) ;
}

@cmddegi: Jetzt verhalten die sich ja wneigstens gleich ;)
 
Thema:

C API edit control Hintergrundfarbe

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben