GetTextMetrics und Unicode
-
Hallo zusammen,
..... TEXTMETRIC textmetrics; GetTextMetrics(hdc, &textmetrics); ......// GetTextMetrics liefert 60, statt 57 Bytes für die
// Struktur TEXTMETRIC zurück, dies führt zum Absturz bei DevStudio 2005 !!
"Run-Time Check Failure #2 - Stack around the variable 'textmetrics' was corrupted".dieses Code sturtzt in VC6 nicht ab ?
wie kann man dieses Problem lösen ?
ich habe einen ganzen Tag versucht den Fehler zu beheben und im Netz gesucht aber bis jetzt erfolglos
in meiner Anwendung ist Unicode eingestellt.
-
Hast Du mit den Structrue Alignments gespielt? prgama pack oder ähnliches?
Ist das nun ein UNICODE Projekt oder ein MBCS Projekt?
-
Hallo und danke für deine schnelle Antwort
mein Projekt ist ein UNICODE Projekt.
ich habe die ganze Projektmappe durchsucht und in anderen Modulen einige "#pragma pack" Anweisungen gefunden:#pragma pack(1) ..... ...... #pragma pack()oder
#pragma pack(push, 8) .... .... #pragma pack(pop)Gruss
Sibourg
-
Wie sieht Deine stdafx.h aus? Afxwin.h wird zuerst included und ich hoffe in der stdafx.h finden sich keine pragma pack Anweisungen. /Zp wird auch nicht verwendet?
-
in der Projekt Eingenschaften steht unter:
Ausrichten der Strukturmember: 1 Byte (/Zp1)in stdafx.h befinden sich keine pragma pack Anweisungen
und in Afxwin.h befinden sich die folgende 3 pragma pack Anweisungen:#ifndef _AFX_NO_AFXCMN_SUPPORT #ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endif #include <afxcomctl32.h> #ifdef _AFX_PACKING #pragma pack(pop) #endif #endifund
#ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endifund
#ifdef _AFX_PACKING #pragma pack(pop) #endif
-
sibourg schrieb:
Ausrichten der Strukturmember: 1 Byte (/Zp1)
Dann wird das das Problem sein.
-
Bingo!
-
Ich muss das hier hoch einmal aufgreifen:
Ich habe das gleiche Problem, und in meinem Projekt (=UNICODE) muss die Ausrichten der Strukturmember auf 2 Byte (/Zp2) stehen, sonst bin ich datentechnisch mit einem anderen Programm nicht mehr kompatibel.
Bekommt man das irgendwie mit #pragma pack([ push | pop ], identifier, n) hin? Irgendwie klappt das bei mir nicht.Danke für eure Mithilfe

-
Hallo,
ich habe das Problem einfach so gelöst.// GetTextMetrics liefert 60, statt 57 Bytes für die
// Struktur TEXTMETRIC zurück, dies führt zum Absturz bei DevStudio 2005 !!
BYTE buffer[100];
for (BYTE i = 0; i<100; i++)
buffer[i] = i;LPTEXTMETRIC lpMetrics = (LPTEXTMETRIC)&buffer;
-
Danke, so funktioniert es!

-
Das kann so nicht funktionieren. Die letzten Datenfelder sind damit in jedem Fall falsch gefüllt. Zudem wird das Problem mit jeder anderen Struktur aus der Win32 API wieder auftreten!