Forum: Win32/Win64 API (native code)
Delphi
by Namenloser,
2. Apr 2010
Wieso machst du schon wieder mit Zeigern rum? Noch mal: ein Objekt ist bereits ein Zeiger. Ich habe dir doch schon gezeigt, wie du es machen musst.
Forum: Win32/Win64 API (native code)
Delphi
by Namenloser,
1. Apr 2010
Gut, eine Zeile Code sagt manchmal mehr als tausend Worte:
function WndProc(hWindow: HWND; dwMsg: ZDWORD; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
wnd: TWindowBase; // Geändert
msg : TMSG;
begin
if dwMsg = WM_NCCREATE then
begin
wnd := TWindowBase.Create(PCreateStruct(nlParam)^.lpCreateParams); // Geändert
Forum: Win32/Win64 API (native code)
Delphi
by Namenloser,
1. Apr 2010
Selbst dann wird es noch crashen, aufgrund des Doppelpointers. Dein Pointer, den du speicherst, zeigt nämlich auf die Adresse der lokalen Variable wnd, nicht auf das dahinterliegende Objekt. Da die Variable wnd im nächsten Durchlauf undefiniert ist, wird auf die falsche Adresse zugegriffen, die zufällig an dieser Stelle gespeichert ist.
Das Objekt selbst ist, wie ich schon sagte, bereits ein...
Forum: Win32/Win64 API (native code)
Delphi
by Namenloser,
1. Apr 2010
Warum speicherst du einen Pointer auf das Objekt (PWindowBase)? Das Objekt ist bereits ein Pointer. Außerdem solltest du dich an die Konvention halten, Klassennamen mit einem T zu beginnen.