Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi PropertySheet blinkt nur kurz auf (https://www.delphipraxis.net/120006-propertysheet-blinkt-nur-kurz-auf.html)

Neutral General 4. Sep 2008 11:26


PropertySheet blinkt nur kurz auf
 
Hi,

Ich versuche gerade so einen PropertySheet Dialog zu erstellen. Das ganze ist im Moment zu Testzwecken nur so dahin geklatscht:

Delphi-Quellcode:
function PropSheetProc(Wnd: HWnd; Msg: Integer; WParam: WParam; LParam: LParam): Boolean; stdcall;
begin
  Result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var psp: TPropSheetpage;
    ps: TPropSheetHeader;
    page: Pointer;
begin
  ZeroMemory(@psp,0);
  psp.dwSize := SizeOf(TPropSheetpage);
  psp.hInstance := hInstance;
  psp.dwFlags := PSP_DEFAULT or PSP_USEHEADERTITLE;
  psp.pfnDlgProc := @PropSheetProc;
  psp.pszHeaderTitle := 'Test';
  page := CreatePropertySheetPage(psp);
  if page = nil then
    ShowMessage(SysErrorMessage(GetLastError));

  ZeroMemory(@ps,0);
  ps.dwSize := SizeOf(TPropSheetHeader);
  ps.nStartPage := 0;
  ps.nPages := 1;
  ps.dwFlags := PSH_WIZARD97 or PSH_HEADER;
  ps.hwndParent := Handle;
  ps.hInstance := hInstance;
  ps.pszCaption := 'Test';
  ps.phpage := @page;

  if PropertySheet(ps) = -1 then
    ShowMessage(SysErrorMessage(GetLastError));
end;
Der Dialog blinkt nur kurz auf und ist dann auch schon wieder verschwunden.
Scheinbar wird die PropSheetProc niemals aufgerufen, denn wenn ich einen Haltepunkt reinsetze hält er nie an und wenn ich psp.dfnDlgProc = nil setze, verhält sich alles genauso.

Was mache ich denn falsch?

Neutral General 5. Sep 2008 08:11

Re: PropertySheet blinkt nur kurz auf
 
Das Problem war die veraltete Definition von PSH_WIZARD97 und man muss den Dialog als Resource einbinden. In MSDN steht zwar, dass ein Dialogtemplate von Windows (?) geladen wird, wenn man nichts angibt, aber die blinkt scheinbar nur kurz auf und verschwindet dann....

Richtige Definition von PSH_WIZARD97 (ab IE5)

Delphi-Quellcode:
PSH_WIZARD97 = $01000000;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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-2025 by Thomas Breitkreuz