ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
403
403
EMPFEHLEN
-
Hallo zusammen!
Ich versuche momentan gerade einige Funktionen aus der GDI in einer .NET-Umgebung bereitzustellen. Das geschieht über eine DLL, die eine Schnittstelle zum unverwalteten Code zur Verfügung stellt. Das Problem ist allerdings, dass sich die Funktionen hier plötzlich ganz anders verhalten als mit einem unverwaltet erstellten Fenster.
Das ist der unverwaltete Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
UGDIHandler::UGDIHandler(HWND hWindow) { m_hWindow = hWindow; } void UGDIHandler::BeginScene() { WINDOWINFO inf; GetWindowInfo(m_hWindow, &inf); m_baseDC = GetDC(m_hWindow); m_compDC = CreateCompatibleDC(m_baseDC); m_compBitmap = CreateCompatibleBitmap(m_baseDC, inf.rcClient.right - inf.rcClient.left, inf.rcClient.bottom - inf.rcClient.top); m_hbmOld = (HBITMAP)SelectObject(m_compDC, m_compBitmap); } void UGDIHandler::EndScene() { SelectObject(m_compDC, m_hbmOld); DeleteObject(m_compBitmap); m_compBitmap = 0; DeleteDC(m_compDC); m_compDC = 0; } void UGDIHandler::Present() { WINDOWINFO inf; GetWindowInfo(m_hWindow, &inf); BitBlt(m_baseDC, 0, 0, inf.rcClient.right - inf.rcClient.left, inf.rcClient.bottom - inf.rcClient.top, m_compDC, 0, 0, SRCCOPY); ReleaseDC(m_hWindow, m_baseDC); }
Ich intialisiere das dann folgendermassen:
Code :1 2 3 4
GDIHandler::GDIHandler(System::Windows::Forms::Control^ renderTarget) { m_pGDI = new UGDIHandler((HWND)renderTarget->Handle.ToPointer()); }
Das Resultat ist allerdings nicht sehr erfreulich da das Fenster unabhängig jeglicher Zeichenaktionen auf m_compDC immer schwarz bleibt. Der exact gleiche Code mit einem unverwalteten Fenster klappt einwandfrei. Ich habe geprüft, dass alle HDC nicht 0 sind, dass das Bitmap nicht monochrom ist und BitBlt gibt auch nicht FALSE zurück und die Grössen des Bitmaps stimmen soweit auch.
Hat jemand eine Ahnung, woran das liegen könnte?
Gruss
Cromon
-
Hallo,
woher das unterschiedliche Verhalten kommt, kann ich dir leider nicht sagen.
Ich wollte nur anmerken, dass ich keinen Sinn darin sehe, GDI-Funktionalität über eine unmanaged DLL in einer .NET-Umgebung bereitzustellen. Über die Graphics-Klasse ist ein wesentlich komfortableres Arbeiten mit GDI bzw. GDI+ möglich.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Es handelt sich dabei um eine Anleitung für die Verbindung zwishen .NET und unverwaltetem Code. Und weil ich das mit der GDI grad im unverwalteten Code hatte hab ich mir das ausgesucht als Beispiel
.
Ähnliche Themen
-
Verwendung Attach
Von NIL92 im Forum 3D Studio MaxAntworten: 1Letzter Beitrag: 16.05.09, 14:22 -
Verwendung von ShellExecuteEx
Von Euler im Forum C/C++Antworten: 3Letzter Beitrag: 08.04.08, 17:14 -
Verwendung von templates
Von MissPiggy im Forum PHPAntworten: 4Letzter Beitrag: 11.07.05, 00:03 -
Script-Verwendung
Von blindfold im Forum PhotoshopAntworten: 0Letzter Beitrag: 03.06.05, 14:07 -
Verwendung von @?
Von 47xxyy im Forum .NET ArchivAntworten: 5Letzter Beitrag: 14.12.04, 19:38





Zitieren
Login






