home *** CD-ROM | disk | FTP | other *** search
- // Zinc Interface Library - SYS.CPP
- // COPYRIGHT (C) 1990, 1991. All Rights Reserved.
- // Zinc Software Incorporated. Pleasant Grove, Utah USA
-
- #include "ui_win.hpp"
- #include <string.h>
-
- UIW_SYSTEM_BUTTON::UIW_SYSTEM_BUTTON() :
- UIW_BUTTON(0, 0, 0, 0, BTF_NO_TOGGLE, WOF_JUSTIFY_CENTER | WOF_NON_FIELD_REGION,
- UIW_SYSTEM_BUTTON::SystemUserFunction),
- menu(0, 0, MNF_SELECT_ONE, WOF_BORDER, WOAF_TEMPORARY | WOAF_NO_DESTROY)
- {
- // Initialize the system button information.
- windowID[0] = ID_SYSTEM_BUTTON;
- windowID[1] = ID_BUTTON;
- search.type = ID_SYSTEM_BUTTON;
- search.numberID = NUMID_SYSTEM;
- strcpy(search.stringID, "NUMID_SYSTEM");
-
- hotKey = HOT_KEY_SYSTEM;
- woAdvancedFlags |= WOAF_NON_CURRENT;
- MSWindowsStyle |= WS_SYSMENU;
- }
-
- int UIW_SYSTEM_BUTTON::Event(const UI_EVENT &event)
- {
- // Switch on the event type.
- int ccode = event.type;
- switch (ccode)
- {
- case S_INITIALIZE:
- if (parent)
- parent->MSWindowsStyle |= MSWindowsStyle;
- break;
-
- case S_CREATE:
- case S_SIZE:
- int height, width;
- width = GetSystemMetrics(SM_CXSIZE);
- height = GetSystemMetrics(SM_CYCAPTION) - 1;
- UI_WINDOW_OBJECT::RegionMax(TRUE);
- true.left -= 1;
- true.top -= 1;
- true.right = true.left + width + 1;
- true.bottom = true.top + height - 1;
- break;
-
- default:
- ccode = UI_WINDOW_OBJECT::Event(event);
- break;
- }
-
- // Return the control code.
- return (ccode);
- }
-
- #pragma argsused
- void UIW_SYSTEM_BUTTON::UserFunction(UI_EVENT &event)
- {
- }
-
- void *UIW_SYSTEM_BUTTON::Information(INFORMATION_REQUEST request, void *data)
- {
- if (request == GET_NUMBERID_OBJECT || request == GET_STRINGID_OBJECT ||
- request == PRINT_INFORMATION)
- return (menu.Information(request, data));
- else if (request == PRINT_INFORMATION)
- {
- UI_WINDOW_OBJECT::Information(request, data);
- return (menu.Information(request, data));
- }
- else
- return (UI_WINDOW_OBJECT::Information(request, data));
- }
-
- #ifdef ZIL_LOAD
- #pragma argsused
- UIW_SYSTEM_BUTTON::UIW_SYSTEM_BUTTON(const char *name, UI_STORAGE *file, USHORT loadFlags) :
- UIW_BUTTON(0, file, L_SUB_LEVEL), menu(0, file, L_SUB_LEVEL)
- {
- windowID[0] = ID_SYSTEM_BUTTON;
- windowID[1] = ID_BUTTON;
- hotKey = HOT_KEY_SYSTEM;
- woAdvancedFlags |= WOAF_NON_CURRENT;
- userFunction = UIW_SYSTEM_BUTTON::SystemUserFunction;
- if (menu.First())
- btFlags |= BTF_DOWN_CLICK;
-
- if (!file)
- file = _storage;
- if (!FlagSet(loadFlags, L_SUB_LEVEL) && FlagSet(file->stStatus, STS_TEMPORARY))
- delete file;
- }
- #endif
-
- #ifdef ZIL_STORE
- #pragma argsused
- void UIW_SYSTEM_BUTTON::Store(const char *name, UI_STORAGE *file, USHORT storeFlags)
- {
- UIW_BUTTON::Store(name, file, storeFlags | S_SUB_LEVEL);
- menu.Store(NULL, file, S_SUB_LEVEL | S_SKIP_TYPE);
- if (!FlagSet(storeFlags, S_SUB_LEVEL))
- file->ObjectSize(name, search);
- }
- #endif
-
-