|
|
1.1 ! root 1: /* ! 2: mdiinit.c - MDI initialization funtions. ! 3: Created by Microsoft Corporation, 1989 ! 4: */ ! 5: #define INCL_WINSYS ! 6: #define INCL_WINCOMMON ! 7: #define INCL_WINMESSAGEMGR ! 8: #define INCL_WINPOINTERS ! 9: #define INCL_WININPUT ! 10: #define INCL_WINMENUS ! 11: #define INCL_WINFRAMEMGR ! 12: #define INCL_WINWINDOWMGR ! 13: #define INCL_WINRECTANGLES ! 14: #define INCL_WINHEAP ! 15: #define INCL_GPIBITMAPS ! 16: #define INCL_GPILCIDS ! 17: #define INCL_DEV ! 18: ! 19: #include <os2.h> ! 20: #include "app.h" ! 21: #include "appdata.h" ! 22: #include "mdi.h" ! 23: #include "mdidata.h" ! 24: ! 25: /* Function prototypes */ ! 26: BOOL RegisterWindowClasses(VOID); ! 27: VOID InitSysValues(VOID); ! 28: ! 29: ! 30: BOOL AppInit(VOID) ! 31: { ! 32: ULONG ctlData; ! 33: HPS hps; ! 34: HDC hdc; ! 35: ! 36: hab = WinInitialize(0); ! 37: ! 38: hmqMDI = WinCreateMsgQueue(hab, 0); ! 39: ! 40: if (!RegisterWindowClasses()) ! 41: return(FALSE); ! 42: ! 43: ctlData = FCF_TITLEBAR | FCF_MINMAX | FCF_SIZEBORDER | FCF_SYSMENU | ! 44: FCF_MENU | FCF_TASKLIST | FCF_SHELLPOSITION | FCF_ICON; ! 45: ! 46: hwndMDIFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE, ! 47: (VOID FAR *)&ctlData, szMDIClass, (PSZ)NULL, ! 48: WS_VISIBLE | WS_CLIPCHILDREN, NULL, IDR_MDI, ! 49: (HWND FAR *)&hwndMDI); ! 50: ! 51: if (hwndMDIFrame == NULL) ! 52: return(FALSE); ! 53: ! 54: hHeap = WinCreateHeap(0, 0, 0, 0, 0, 0); ! 55: ! 56: if (hHeap == NULL) ! 57: return(FALSE); ! 58: ! 59: hps = WinGetPS(hwndMDI); ! 60: ! 61: hdc = GpiQueryDevice(hps); ! 62: DevQueryCaps(hdc, CAPS_FAMILY, CAPS_VERTICAL_FONT_RES, (PLONG)rglDevCaps); ! 63: ! 64: WinReleasePS(hps); ! 65: ! 66: InitSysValues(); ! 67: ! 68: return(TRUE); ! 69: } ! 70: ! 71: ! 72: VOID InitSysValues(VOID) ! 73: { ! 74: cyTitlebar = (SHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYTITLEBAR); ! 75: cyIcon = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYICON); ! 76: ! 77: cxBorder = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXBORDER); ! 78: cyBorder = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYBORDER); ! 79: ! 80: cxSizeBorder = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER); ! 81: cySizeBorder = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER); ! 82: ! 83: cxByteAlign = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXBYTEALIGN); ! 84: cyByteAlign = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYBYTEALIGN); ! 85: ! 86: cxVScroll = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYHSCROLL); ! 87: cyVScrollArrow = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYVSCROLLARROW); ! 88: cyHScroll = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXVSCROLL); ! 89: ! 90: cxScreen = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXSCREEN); ! 91: cyScreen = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CYSCREEN); ! 92: ! 93: cxMinmaxButton = (USHORT)WinQuerySysValue(HWND_DESKTOP, SV_CXMINMAXBUTTON); ! 94: } ! 95: ! 96: ! 97: BOOL RegisterWindowClasses(VOID) ! 98: { ! 99: if (!WinRegisterClass(NULL, szMDIClass, (PFNWP)MDIWndProc, ! 100: CS_SYNCPAINT, 0)) ! 101: return(FALSE); ! 102: ! 103: if (!WinRegisterClass(NULL, szDocClass, (PFNWP)DocWndProc, ! 104: 0L, sizeof(NPVIEW))) ! 105: return(FALSE); ! 106: ! 107: return(TRUE); ! 108: } ! 109: ! 110: ! 111: VOID AppTerminate(VOID) ! 112: { ! 113: WinDestroyWindow(hwndMDIFrame); ! 114: ! 115: WinDestroyHeap(hHeap); ! 116: ! 117: WinDestroyMsgQueue(hmqMDI); ! 118: ! 119: WinTerminate(hab); ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.