Last updated: 5. 3.1998, 7:38
<*/NOWARN:F*> (*---------------------------------- PAGE2.C --- Property sheet page 2 (c) Paul Yao, 1996 Page2.mod --- Translation to Stony Brook Modula-2 (c) Peter Stadler, 1997 ----------------------------------*) IMPLEMENTATION MODULE Page2; IMPORT SYSTEM; IMPORT WIN32; IMPORT WINUSER; IMPORT COMMCTRL; IMPORT h2d_property; IMPORT Notify; IMPORT Helper; VAR pTheExStyles : WIN32.LPDWORD; (*------------------------------------------------------------------- *) (*------------------------------------------------------------------- *) <*/PUSH*> %IF WIN32 %THEN <*/CALLS:WIN32SYSTEM*> %ELSE <*/CALLS:WINSYSTEM*> %END (*++++*****************************************************************) PROCEDURE ExStylePageProc (hwnd : WIN32.HWND; (**********************************************************************) uMsg : WIN32.UINT; ppsp : COMMCTRL.LPPROPSHEETPAGE): WIN32.UINT [EXPORT]; BEGIN CASE (uMsg) OF | COMMCTRL.PSPCB_CREATE : (* Store pointer to extended style data *) pTheExStyles := SYSTEM.CAST(WIN32.LPDWORD,ppsp^.lParam); RETURN 1; | COMMCTRL.PSPCB_RELEASE : RETURN 0; ELSE RETURN 0; END; END ExStylePageProc; (*******************************************************************- *) <*/POP*> (*******************************************************************- *) <*/PUSH*> %IF WIN32 %THEN <*/CALLS:WIN32SYSTEM*> %ELSE <*/CALLS:WINSYSTEM*> %END (*++++*****************************************************************) PROCEDURE ExStyleDlgProc (hwndDlg : WIN32.HWND; (**********************************************************************) msg : WIN32.UINT; 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 := pTheExStyles^; bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_CLIENTEDGE)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CLIENTEDGE, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_CONTEXTHELP)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CONTEXTHELP, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_DLGMODALFRAME)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_DLGMODALFRAME, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_OVERLAPPEDWINDOW)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_EXOVERLAPPED, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_PALETTEWINDOW)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_PALETTE, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_STATICEDGE)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_STATICEDGE, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_TOOLWINDOW)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_TOOLWINDOW, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_WINDOWEDGE)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_WINDOWEDGE, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_ACCEPTFILES)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_ACCEPTFILES, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_APPWINDOW)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_APPWINDOW, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_TOPMOST)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_TOPMOST, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_TRANSPARENT)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_TRANSPARENT, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_CONTROLPARENT)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_CONTROLPARENT, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_MDICHILD)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_MDICHILD, bCheck); bCheck := SYSTEM.CAST(BOOLEAN,(dwOrigStyle BAND WINUSER.WS_EX_NOPARENTNOTIFY)); Helper.SetButtonCheck (hwndDlg, h2d_property.IDC_NOPARENTNOTIFY, bCheck); RETURN TRUE; | WINUSER.WM_COMMAND : wNotifyCode := WINUSER.HIWORD (wParam); wID := WINUSER.LOWORD (wParam); CASE (wID) OF | h2d_property.IDC_CLIENTEDGE : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_CONTEXTHELP : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_DLGMODALFRAME : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_EXOVERLAPPED : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_PALETTE : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_STATICEDGE : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_TOOLWINDOW : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_WINDOWEDGE : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_ACCEPTFILES : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_APPWINDOW : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_TOPMOST : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_TRANSPARENT : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_CONTROLPARENT : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_MDICHILD : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); | h2d_property.IDC_NOPARENTNOTIFY : hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Changed (hwndSheet, hwndDlg); ELSE END; RETURN TRUE; | WINUSER.WM_HELP : (* Catch F1 key strike *) WINUSER.MessageBox (hwndDlg, "WM_HELP Message Received", "ExStyleDlgProc", WINUSER.MB_OK); RETURN TRUE; | WINUSER.WM_NOTIFY : pnmh := SYSTEM.CAST(WINUSER.LPNMHDR,lParam); (* Handle Finish button on wizard page *) IF (pnmh^.code = COMMCTRL.PSN_WIZFINISH) THEN hwndPS := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_Apply (hwndPS); RETURN TRUE; END; (* Handle OK and Apply buttons *) IF (pnmh^.code = COMMCTRL.PSN_APPLY) OR (pnmh^.code = COMMCTRL.PSN_RESET) THEN (* Overwrite current style value *) pTheExStyles^ := FetchExStyles (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; 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 Back and Finish buttons on wizard page *) IF (bWizard) AND (pnmh^.code = COMMCTRL.PSN_SETACTIVE) THEN hwndSheet := WINUSER.GetParent (hwndDlg); COMMCTRL.PropSheet_SetWizButtons (hwndSheet, COMMCTRL.PSWIZB_BACK BOR COMMCTRL.PSWIZB_FINISH); END; (* Support FOR Help button DO *) IF (pnmh^.code = COMMCTRL.PSN_HELP) THEN WINUSER.MessageBox (hwndDlg, "PSN_HELP Notification Received", "ExStyleDlgProc", WINUSER.MB_OK); END; RETURN TRUE; ELSE RETURN FALSE; END; END ExStyleDlgProc; (*******************************************************************- *) <*/POP*> (*+++***************************************************************- *) PROCEDURE FetchExStyles (hwndDlg : WIN32.HWND) : WIN32.DWORD; (*******************************************************************- *) VAR dwStyle : WIN32.DWORD; BEGIN dwStyle := 0h; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CLIENTEDGE)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_CLIENTEDGE; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CONTEXTHELP)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_CONTEXTHELP; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_DLGMODALFRAME)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_DLGMODALFRAME; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_EXOVERLAPPED)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_OVERLAPPEDWINDOW; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_PALETTE)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_PALETTEWINDOW; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_STATICEDGE)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_STATICEDGE; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_TOOLWINDOW)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_TOOLWINDOW; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_WINDOWEDGE)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_WINDOWEDGE; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_ACCEPTFILES)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_ACCEPTFILES; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_APPWINDOW)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_APPWINDOW; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_TOPMOST)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_TOPMOST; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_TRANSPARENT)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_TRANSPARENT; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_CONTROLPARENT)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_CONTROLPARENT; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_MDICHILD)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_MDICHILD; END; IF (Helper.QueryButtonCheck (hwndDlg, h2d_property.IDC_NOPARENTNOTIFY)) THEN dwStyle := dwStyle BOR WINUSER.WS_EX_NOPARENTNOTIFY; END; RETURN dwStyle; END FetchExStyles; END Page2.