uses CommCtrl_Fragment;
// bzw
const
PSH_WIZARD97 = $01000000;
// WizardProc1 + 2 (1=2 im Moment)
function WizardProc(Wnd: HWnd; Msg: Integer; WParam: WParam; LParam: LParam): Boolean;
stdcall;
begin
Result := true;
// + oben genannte Versuche das Fenster neu zu zeichnen z.B.:
case Msg
of
WM_NOTIFY:
begin
case PNMHdr(LParam)^.code
of // oder nur wnd
PSN_SETACTIVE: SetWindowPos(GetParent(wnd),HWND_TOP,0,0,0,0,SWP_DRAWFRAME
or SWP_NOMOVE
or SWP_NOSIZE
or SWP_SHOWWINDOW);
end;
end;
end;
// Das ist nur ein Beispiel aber die anderen wären auch (irgendwo) da zu finden. In den Aufrufen dürfte kein Fehler sein.
end;
procedure TForm1.Button1Click(Sender: TObject);
var psp1: TPropSheetpage;
ps: TPropSheetHeader;
pages:
Array[0..1]
of Pointer;
begin
ZeroMemory(@psp1,0);
psp1.dwSize := SizeOf(TPropSheetpage);
psp1.dwFlags := PSP_DEFAULT;
psp1.hInstance := hInstance;
psp1.pfnDlgProc := @WizardProc;
psp1.pszTemplate := MakeIntResource(100);
pages[0] := CreatePropertySheetPage(psp1);
psp1.pfnDlgProc := @WizardProc2;
psp1.pszTemplate := MakeIntResource(200);
pages[1] := CreatePropertySheetPage(psp1);
ZeroMemory(@ps,0);
ps.dwSize := SizeOf(TPropsheetHeader);
ps.dwFlags := PSH_WIZARD97
or PSH_HEADER;
ps.hInstance := hInstance;
ps.hwndParent :=
Handle;
ps.phpage := @pages[0];
ps.nPages := Length(pages);
ps.nStartPage := 0;
PropertySheet(ps);
end;