home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / os2sdk / os2sdk11 / tk4 / mdi / appinit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-20  |  3.0 KB  |  121 lines

  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. }
  121.