Last updated: 11. 1.1998, 17: 6
<*/NOWARN:F*> (*----------------------------------------- SHEET.C --- Property sheet page functions. (c) Paul Yao, 1996 Sheet.mod --- Translation to Stony Brook Modula-2 (c) Peter Stadler, 1997 -----------------------------------------*) IMPLEMENTATION MODULE Sheet; IMPORT SYSTEM; IMPORT COMMCTRL; IMPORT WINUSER; IMPORT WIN32; IMPORT WINGDI; IMPORT WINX; IMPORT comcthlp; IMPORT MemUtils; IMPORT h2d_property; IMPORT Page1; IMPORT Page2; (* extern DWORD dwChildStyle ; extern DWORD dwChildExStyle ; extern DWORD dwSheetStyles ; extern char szAppName[] ; extern HINSTANCE hInst; extern HICON hiconApp; *) (*------------------------------------------------------------------- *) (*******************************************************************- *) <*/PUSH*> %IF WIN32 %THEN <*/CALLS:WIN32SYSTEM*> %ELSE <*/CALLS:WINSYSTEM*> %END (*++++*****************************************************************) PROCEDURE PropSheetProc (hwndDlg : WIN32.HWND; uMsg : WIN32.UINT; lParam : WIN32.LPARAM) : INTEGER [EXPORT]; (**********************************************************************) BEGIN CASE (uMsg) OF | COMMCTRL.PSCB_INITIALIZED : (* Process PSCB_INITIALIZED *) | COMMCTRL.PSCB_PRECREATE : (* Process PSCB_PRECREATE *) ELSE (* Unknown message *) END; RETURN 0; END PropSheetProc; <*/POP*> (*******************************************************************- *) PROCEDURE CreatePropertySheet (hwndParent : WIN32.HWND) : BOOLEAN; (*******************************************************************- *) VAR pshead : COMMCTRL.PROPSHEETHEADER; pspage : ARRAY[0..1] OF COMMCTRL.PROPSHEETPAGE; BEGIN (* Initialize property sheet HEADER data *) MemUtils.FillMemBYTE (pshead, SIZE (COMMCTRL.PROPSHEETHEADER),0); pshead.dwSize := SIZE (COMMCTRL.PROPSHEETHEADER); pshead.dwFlags := dwSheetStyles BOR COMMCTRL.PSH_PROPSHEETPAGE BOR COMMCTRL.PSH_USECALLBACK BOR COMMCTRL.PSH_USEHICON; pshead.hwndParent := hwndParent; pshead.hInstance := hInst; (* pshead.hIcon := hiconApp; *) pshead.pszCaption := SYSTEM.ADR("A Child Window"); pshead.nPages := 2; (* pshead.nStartPage := 0; pshead.ppsp := pspage; *) pshead.pfnCallback := SYSTEM.CAST(COMMCTRL.PFNPROPSHEETCALLBACK,PropSheetProc); (* Zero out property PAGE data *) MemUtils.FillMemBYTE (pspage, SIZE (COMMCTRL.PROPSHEETHEADER),0); (* PAGE 1 -- window style page *) pspage[0].dwSize := SIZE (COMMCTRL.PROPSHEETPAGE); pspage[0].dwFlags := COMMCTRL.PSP_USECALLBACK BOR COMMCTRL.PSP_USEICONID; pspage[0].hInstance := WINX.Instance; (* pspage[0].pszTemplate := WINUSER.MAKEINTRESOURCE (IDD_STYLES); pspage[0].pszIcon := WINUSER.MAKEINTRESOURCE (IDI_PAGE1); *) pspage[0].pfnDlgProc := SYSTEM.CAST(WINUSER.DLGPROC,Page1.StyleDlgProc); pspage[0].lParam := SYSTEM.CAST(WIN32.LPARAM,SYSTEM.ADR(dwChildStyle)); pspage[0].pfnCallback := SYSTEM.CAST(COMMCTRL.LPFNPSPCALLBACK,Page1.StylePageProc); (* PAGE 2 -- extended window style page *) pspage[1].dwSize := SIZE (COMMCTRL.PROPSHEETPAGE); pspage[1].dwFlags := COMMCTRL.PSP_USECALLBACK BOR COMMCTRL.PSP_USEICONID BOR COMMCTRL.PSP_HASHELP; pspage[1].hInstance := hInst; (* pspage[1].pszTemplate := WINUSER.MAKEINTRESOURCE (IDD_EXSTYLES); pspage[1].pszIcon := WINUSER.MAKEINTRESOURCE (IDI_PAGE2); *) pspage[1].pfnDlgProc := SYSTEM.CAST(WINUSER.DLGPROC,Page2.ExStyleDlgProc); pspage[1].lParam := SYSTEM.CAST(WIN32.LPARAM,SYSTEM.ADR(dwChildExStyle)); pspage[1].pfnCallback := SYSTEM.CAST(COMMCTRL.LPFNPSPCALLBACK,Page2.ExStylePageProc); (* ********* Create and display property sheet ********* *) RETURN SYSTEM.CAST(BOOLEAN,COMMCTRL.PropertySheet (pshead)); END CreatePropertySheet; BEGIN END Sheet.