| |
|
|
Sebastian König | Hallo,
als ich mich gerade mal etwas weiter mit dem vor längerer Zeit angekündigten DLL-Tutorial für Profan2Cpp beschäftigen wollte, ist mir ein Bug im Header structs.ph aufgefallen. Die Zeile für CREATESTRUCT lautet: KompilierenMarkierenSeparierenCREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&;
Das Problem sind die Attribute cy%, cx%, y% und x% - hierbei sollte es sich um LongInts handeln...
Zwar steht in der MSDN-Doku zur Struktur einfach nur int, aber dieser Datentyp ist unter 32bit-Windows genauso groß wie ein LongInt, also 4 Byte. %-Attribute sind aber nur 2 Byte groß, sodass sich die Struktur in dieser Form nicht richtig verwenden lässt.
Möglicherweise sind noch weitere Strukturen betroffen, wobei ich mir da nicht sicher bin. Bei WNDCLASS zum Beispiel sind cbClsExtra und cbWndExtra korrekt als LongInt deklariert, obwohl auch diese Attribute im MSDN nur als int stehen.
MfG
Sebastian |
|
|
| |
|
|
|
| Wie wirkt sich jetzt dieser Fehler aus?
mfg |
|
|
| |
|
|
|
RGH | Danke für den Hinweis!
Ich werde das in der nächsten Version anpassen.
Da ich die STRUCTS.PH nicht selber erzeugt habe, sondern von einem (ehemaligen) Profaner übernommen habe, kann ich leider nicht ausschließen, dass weitere Fehler enthalten sind. Wer Fehler findet, sollte sie hier oder mir per Mail melden, damit sie korrigiert werden und/oder eine korrigierte (gerne auch erweiterte) Version von STRUCTS.PH zur Verfügung stellen.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 11.04.2009 ▲ |
|
|
|
|
Sebastian König | Peter Bierbachh
Wie wirkt sich jetzt dieser Fehler aus?
Zum Beispiel dann, wenn Du eine Fenster-Prozedur selbst schreibst und WM_CREATE behandeltst. Konkret hatte ich mich gewundert, dass der manuelle Zugriff auf ein CREATESTRUCT-Attribut über sein Offset funktionierte, während die Verwendung der Struktur fehlschlug. Nach kurzer Suche stieß ich dann auf den Fehler in der Definition.
MfG
Sebastian |
|
|
| |
|
|