![]() |
Rückgabe von hModul ist fehlerhaft
Eigentlich funktioniert das..
Code:
aber wenn ich diese Funktion aufrufe um einen Font zu erstellen.
HMODULE gdiplib() {
static HMODULE hGdip; if (hGdip == 0) { hGdip = LoadLibrary(L"GDIPLUS"); } return hGdip; }
Code:
GdipCreateFont(fontfam, (float)UseSize, 0, 2, TempFont);
Code:
ist TempFont immer 0 weil das hModule den wert 0xfefefefe zurück gibt.
long GdipCreateFont(IN LONG_PTR fontFamily, IN float emSize, IN long style, IN long unit, OUT LONG_PTR &font) {
long nRet = -1; // Error font = 0; HMODULE hModule = gdiplib(); if (hModule) { long_proc(LONG_PTR, float, long, long, LONG_PTR*); static zProc hProc; if (hProc == 0) { hProc = (zProc)GetProcAddress(hModule, "GdipCreateFont"); } if (hProc) { nRet = hProc(fontFamily, emSize, style, unit, &font); } } return nRet; } Zitat:
Warum gehen mir ständig die Handles verloren. Unter Delphi habe ich mit solchen Problemen nicht zu kämpfen. gruss |
AW: Rückgabe von hModul ist fehlerhaft
Hallo,
OUT LONG_PTR &font) { Hm, das wäre jetzt ein Doppelpointer. Reicht denn nicht OUT LONG_long &font oder OUT LONG_PTR font) { |
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Code:
Und hier wird nun mal ein Doppelpointer verlangt.
GpStatus WINGDIPAPI GdipCreateFont( GDIPCONST GpFontFamily *fontFamily, REAL emSize, INT style, Unit unit, GpFont **font )
Das ist aber nicht mein Problem sondern das mir die Handles verloren gehen. EDIT: Es sieht so aus das VC++ extrem auf Speicherlecks reagiert das ist wohl auch der Grund warum dann von Speicher nicht gelesen werden kann. gruss |
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Hat es btw einen bestimmten Grund, dass du die GDI+ dynamisch lädst? Den NULL Check kannst du dir übrigens sparen. Statics werden eh nur einmalig initialisiert:
Code:
HMODULE gdiplib()
{ static HMODULE hGdip = LoadLibrary(L"GDIPLUS"); return hGdip; } |
AW: Rückgabe von hModul ist fehlerhaft
Hallo,
um noch mal auf die Ausgangsfrage zurückzukommen: long GdipCreateFont(IN LONG_PTR fontFamily, IN float emSize, IN long style, IN long unit, OUT LONG_PTR &font) { long nRet = -1; // Error font = 0; HMODULE hModule = gdiplib(); // ** // // ** // hier ist jetzt hModule irgendwann nicht mehr der Wert, der ursprünglich in hGdip stand? D.h. die static-Variable ist durch irgendwas überschrieben worden? |
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Code:
der beträgt irgendwann 0xFEFEFEFEFE
HMODULE gdiplib()
{ static HMODULE hGdip = LoadLibrary(L"GDIPLUS"); return hGdip; } EDIT: Zitat:
gruss |
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Da kann ich nur sagen "Viel Spass beim suchen":-D |
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Habe meine eigene Funktion wieder eingebunden ohne den <vector> Kram. gruss |
AW: Rückgabe von hModul ist fehlerhaft
Also Emil
mit Dir ist es manchmal schon lustig..... Zitat:
|
AW: Rückgabe von hModul ist fehlerhaft
Zitat:
Na man sollte auch mal Herzhaft lachen dürfen ;) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz