Last updated: 5. 3.1998, 7:38
<*/NOWARN:F*>
(*----------------------------------
PAGE1.C --- Property sheet page 1
(c) Paul Yao, 1996
Page1.mod --- Translation to Stony Brook Modula-2
(c) Peter Stadler, 1997
----------------------------------*)
IMPLEMENTATION MODULE Page1;
IMPORT SYSTEM;
IMPORT WIN32;
IMPORT WINUSER;
IMPORT COMMCTRL;
IMPORT h2d_property;
IMPORT Notify;
IMPORT Helper;
(*------------------------------------------------------------------- *)
<*/PUSH*>
%IF WIN32 %THEN
<*/CALLS:WIN32SYSTEM*>
%ELSE
<*/CALLS:WINSYSTEM*>
%END
(*++++*****************************************************************)
PROCEDURE StylePageProc (hwnd : WIN32.HWND;
(**********************************************************************)
uMsg : WIN32.UINT;
ppsp : COMMCTRL.LPPROPSHEETPAGE): WIN32.UINT [EXPORT];
BEGIN
CASE (uMsg) OF
| COMMCTRL.PSPCB_CREATE :
(* Store pointer to style data *)
pTheStyles := SYSTEM.CAST(WIN32.LPDWORD,ppsp^.lParam);
RETURN 1;
| COMMCTRL.PSPCB_RELEASE :
RETURN 0;
ELSE
RETURN 0;
END;
END StylePageProc;
<*/POP*>
(*******************************************************************- *)
<*/PUSH*>
%IF WIN32 %THEN
<*/CALLS:WIN32SYSTEM*>
%ELSE
<*/CALLS:WINSYSTEM*>
%END
(*++++*****************************************************************)
PROCEDURE StyleDlgProc (hwndDlg : WIN32.HWND;
(**********************************************************************)
msg : WIN32.UINT;
ppsp : COMMCTRL.LPPROPSHEETPAGE;
wParam : WIN32.WPARAM;
lParam : WIN32.LPARAM) : WIn32.BOOL [EXPORT];
VAR
bCheck : BOOLEAN;
dwOrigStyle : WIN32.DWORD;
wNotifyCode : WIN32.WORD;
wID : WIN32.WORD;
hwndSheet : WIN32.HWND;
pnmh : WINUSER.LPNMHDR;
hwndPS : WIN32.HWND;
hwndActive : WIN32.HWND;
psh : COMMCTRL.LPPSHNOTIFY;
hwndPropSheet: WIN32.HWND;
BEGIN
CASE (msg) OF
| WINUSER.WM_INITDIALOG :
dwOrigStyle := pTheStyles^;
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_VISIBLE));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_VISIBLE, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_DISABLED));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_DISABLED, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_MINIMIZE));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_MINIMIZE, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_MAXIMIZE));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_MAXIMIZE, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_CLIPCHILDREN));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CLIPCHILDREN, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_CLIPSIBLINGS));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CLIPSIBLINGS, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_BORDER));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_BORDER, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_CAPTION));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CAPTION, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_DLGFRAME));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_DLGFRAME, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_HSCROLL));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_HSCROLL, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_MAXIMIZEBOX));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_MAXIMIZEBOX, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_MINIMIZEBOX));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_MINIMIZEBOX, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_SYSMENU));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_SYSMENU, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_THICKFRAME));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_THICKFRAME, bCheck);
bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_VSCROLL));
Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_VSCROLL, bCheck);
RETURN TRUE;
| WINUSER.WM_COMMAND :
wNotifyCode := WINUSER.HIWORD (wParam);
wID := WINUSER.LOWORD (wParam);
CASE (wID) OF
| h2d_property.IDC_VISIBLE :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_DISABLED :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_MINIMIZE :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_MAXIMIZE :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_CLIPCHILDREN :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_CLIPSIBLINGS :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_BORDER :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_CAPTION :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_DLGFRAME :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_HSCROLL :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_MAXIMIZEBOX :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_MINIMIZEBOX :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_SYSMENU :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_THICKFRAME :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
| h2d_property.IDC_VSCROLL :
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg);
ELSE
RETURN TRUE;
END;
| WINUSER.WM_HELP :
(* Catch F1 key strike *)
WINUSER.MessageBox (hwndDlg, "WM_HELP Message Received",
"StyleDlgProc", WINUSER.MB_OK);
RETURN TRUE;
| WINUSER.WM_NOTIFY :
pnmh := SYSTEM.CAST(WINUSER.LPNMHDR,lParam);
(* Handle OK and Apply buttons *)
IF (pnmh^.code = COMMCTRL.PSN_APPLY) THEN
(* Overwrite current style value *)
pTheStyles^ := FetchStyles (hwndDlg);
(* Tell main window to re-create child window *)
hwndPS := WINUSER.GetParent (hwndDlg);
hwndActive := COMMCTRL.PropSheet_GetCurrentPageHwnd (hwndPS);
(* Only re-create if we're the active page *)
IF (hwndDlg = hwndActive) THEN
WINUSER.PostMessage (hwndMain, h2d_property.PM_CREATEWINDOW, 0, 0h);
END;
(* Destroy modeless dialog on OK or Cancel *)
IF (WINUSER.IsWindowEnabled (hwndMain) AND
((pnmh^.code = COMMCTRL.PSN_APPLY) OR (pnmh^.code = COMMCTRL.PSN_RESET))) THEN
psh := SYSTEM.CAST(COMMCTRL.LPPSHNOTIFY,lParam);
(* Ignore Apply button *)
IF (pnmh^.code = COMMCTRL.PSN_APPLY) AND (psh^.lParam = 0) THEN
RETURN TRUE;
END;
(* Clicking OK or Cancel, destroy property sheet *)
hwndPropSheet := WINUSER.GetParent (hwndDlg);
WINUSER.DestroyWindow (hwndPropSheet);
hwndModeless := NIL;
END;
(* Enable Next button on wizard page *)
IF (bWizard) AND (pnmh^.code = COMMCTRL.PSN_SETACTIVE) THEN
hwndSheet := WINUSER.GetParent (hwndDlg);
COMMCTRL.PropSheet_SetWizButtons (hwndSheet, COMMCTRL.PSWIZB_NEXT);
END;
RETURN TRUE;
ELSE
RETURN FALSE;
END;
ELSE
END;
END StyleDlgProc;
<*/POP*>
(*+++***************************************************************- *)
PROCEDURE FetchStyles (hwndDlg : WIN32.HWND) : WIN32.DWORD;
(*******************************************************************- *)
VAR
dwStyle : WIN32.DWORD;
BEGIN
dwStyle := WINUSER.WS_CHILD;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_VISIBLE)) THEN
dwStyle := dwStyle BOR WINUSER.WS_VISIBLE;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_DISABLED)) THEN
dwStyle := dwStyle BOR WINUSER.WS_DISABLED;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_MINIMIZE)) THEN
dwStyle := dwStyle BOR WINUSER.WS_MINIMIZE;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_MAXIMIZE)) THEN
dwStyle := dwStyle BOR WINUSER.WS_MAXIMIZE;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CLIPCHILDREN)) THEN
dwStyle := dwStyle BOR WINUSER.WS_CLIPCHILDREN;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CLIPSIBLINGS)) THEN
dwStyle := dwStyle BOR WINUSER.WS_CLIPSIBLINGS;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_BORDER)) THEN
dwStyle := dwStyle BOR WINUSER.WS_BORDER;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CAPTION)) THEN
dwStyle := dwStyle BOR WINUSER.WS_CAPTION;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_DLGFRAME)) THEN
dwStyle := dwStyle BOR WINUSER.WS_DLGFRAME;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_HSCROLL)) THEN
dwStyle := dwStyle BOR WINUSER.WS_HSCROLL;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_MAXIMIZEBOX)) THEN
dwStyle := dwStyle BOR WINUSER.WS_MAXIMIZEBOX;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_MINIMIZEBOX)) THEN
dwStyle := dwStyle BOR WINUSER.WS_MINIMIZEBOX;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_SYSMENU)) THEN
dwStyle := dwStyle BOR WINUSER.WS_SYSMENU;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_THICKFRAME)) THEN
dwStyle := dwStyle BOR WINUSER.WS_THICKFRAME;
END;
IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_VSCROLL)) THEN
dwStyle := dwStyle BOR WINUSER.WS_VSCROLL;
END;
RETURN dwStyle;
END FetchStyles;
BEGIN
END Page1.