Handle ergattern
-
Hallo,
wie kann ich in einem erstellten MFC Programm den Handel bekommen.
Wenn ich ein Programm selbst schreibe mache ich dass mit:HDC hdc;
hdc = GetDC(hwnd);
...
ReleaseDC (hwnd, hdc);
Doch leider kennt das von MFC erstellte Programm hwnd nicht.
Wie soll ich dass machen??Gruß
Frostie
-
Ich glaube du meinst das :
CDC* pDC = hwnd->GetDC();Gruß
:: NoName ::
-
Das funzt so net:
error C2065: 'hwnd': nichtdeklarierter Bezeichner
error C2227: Der linke Teil von '->GetDC' muss auf Klasse/Struktur/Union zeigenWo kann ich den Händel erfahren? Doch nicht in der OnDraw Funktion oder?
Wenn ich HWND hwnd mache dann kennt er nur die Funktion unused.
Gruß
Frostie
-
Das liegt daran, das GetDC() nur bei CWnd Objekten funktioniert ! (HWND leider nicht)
Was genau möchtest du eigentlich machen ? Willst du das Handle von dem gesamten Programm herausfinden ???Gruß
:: NoName ::
-
Ich möchte zB ein Rectangle zeichnen,
dazu brauch ich den hdc.Wenn ich die Schriftstärke ändern will, muß ich auch den hdc und den hwnd nutzen, oder?
Gruß
Frostie
-
Und warum benutzt nicht einfach CPen ?
das ist dann kinderleicht !CDC* pDC = GetDC(); CPen pen(PS_SOLID, 1, RGB(0,0,0)); //Die 1 steht für die Liniendicke ! pDC->SelectObject(&pen); pDC->Rectangle(20,20,20,20);Gruß
:: NoName ::
-
Das klappt ja schon ganz gut,
aber wie kann ich nun das Rechteck mit zB grau füllen und dann mit nem
schwarzen Text reinschreiben??Danke
Frostie
-
Servus,
CDC -> MSDN

Farbe:
FillRect() Fills a given rectangle by using a specific brush.
FillSolidRect() Fills a rectangle with a solid color.Text:
TextOut() Writes a character string at a specified location using the currently selected font.*winke*
Hellsgore
-
Oder du benutzt SelectStockObject :
pDC->SelectStockObject(GRAY_BRUSH);GRAY_BRUSH -> Dunkelgrau
DKGRAY_BRUSH -> Hellgrau
BLACK_BRUSH -> SchwarzDas muss dann ungefähr so aussehen :
CDC* pDC = GetDC(); CPen pen(PS_SOLID, 5, RGB(0,0,0)); pDC->SelectObject(&pen); pDC->SelectStockObject(DKGRAY_BRUSH); pDC->Rectangle(CRect(300,200,50,50)); pDC->TextOut(100,100, "Das ist der Text");Gruß
:: NoName ::
-
@NoName
Das muss dann ungefähr so aussehen :
Code:
CDC* pDC = GetDC();
CPen pen(PS_SOLID, 5, RGB(0,0,0));
pDC->SelectObject(&pen);
pDC->SelectStockObject(DKGRAY_BRUSH);
pDC->Rectangle(CRect(300,200,50,50));
pDC->TextOut(100,100, "Das ist der Text");Warum ist dann der Text von einem weißen Feld umgeben?
Gruß Frostie
-
Hmm, das weiss ich leider auch net. Das muss wohl allgemein an der Funktion TextOut() liegen (!) und eine andere Funktion wie TextOut kenne ich leider nicht.
Gruß
:: NoName ::