tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
213
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ibafluss ibafluss ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    168
    Hey Leute!
    Ich bin grad am lernen mit der WinApi und bin da auf eine Zeile gestoßen, die ich auch mit MSDN nicht lösen konnte:

    Code :
    1
    
    HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC, CreateSolidBrush (RGB (10, 120, 220)));

    Also mit CreateSolidBrush() wird ein HBRUSH Objekt erstellt, dass mit RGB() beschrieben wird. In der MSDN steht für SelectObject(), dass ein Objekt ausgewählt wird und das neue Objekt dann das alte ersetzt. Nur gebe ich ja nur ein Objekt an, wo ist dann das neue bzw. alte?

    Lg
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    hOldBrush ist das Alte.
    Zu einem Zeitpunkt kann nur ein Brush da sein. Das neue, aus CreateSolidBrush,
    ersetzt das Alte, das zur Vollständigkeit returned wird.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    ibafluss ibafluss ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    168
    Für was wird das SelectObject() denn benötigt?
    Ich meine warum geht es nicht nur mit CreateSolidBrush()?

    Code :
    1
    
    HBRUSH hOldBrush = CreateSolidBrush(RGB(10,120,220)));

    Lg
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    1) kann mach sich so mehrere Brushes anlegen und dazwischen wechseln.
    Wenn man zB. nur zwei braucht und immer wechselt, würde das immer-neu-erstellen
    langsamer und resourcen-verschwenderischer sein.

    2) "verbindet" man mit dem SelectObject das hDc mit zB. dem Brush.
    Man kann ja auch mehrere hDc´s haben.
    Nur CreateSolidBrush wäre nur dann möglich, wenn es immer das eine fixe hDc gibt.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  5. #5
    ibafluss ibafluss ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    168
    Zu 1)
    Das geht ja ohne SelectObject() auch oder?

    Code :
    1
    2
    
    HBRUSH h1 = CreateSolidBrush (RGB (100, 120, 140);
    HBRUSH h2 = CreateSolidBrush (RGB (120, 100, 140);

    Jetzt hab ich zwei verschiedene und kann zwischen denen wechseln oder?
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ja, genau.
    Aber zum Wechseln brauchst du eben SelectObject.

    Wenn du drei Pinsel und deine beiden Hände hernimmst, sind die Pinsel die Brushes
    und jede Hand ein hDc.
    Am Anfang liegen alle drei Pinsel vor dir am Tisch, die Hände sind leer.
    Jetzt kannst du mit einem SelectObject den Pinsel 1 in die rechte Hand nehmen,
    mit dem Nächsten den Pinsel 2 in die Linke Hand.
    Mit einem SelectObject für rechte Hand und Pinsel 3 legst du den ersten wieder auf den Tisch
    (welcher weggelegt wird: Returnwert) und nimmst den Dritten.
    ibafluss bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    ibafluss ibafluss ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    168
    Genau tut mir Leid ich bin gerade ein bisschen auf der Leitung gestanden!

    Vielen Danke!
     

Ähnliche Themen

  1. SelectObject() DeleteObject()
    Von Thomasio im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.08.11, 20:10
  2. Antworten: 2
    Letzter Beitrag: 12.02.08, 19:26
  3. Antworten: 0
    Letzter Beitrag: 07.08.07, 18:12
  4. Gerätekontext (SelectObject und Selectstockobject)
    Von LukeS im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 23.03.06, 23:06
  5. Antworten: 8
    Letzter Beitrag: 14.06.04, 10:37