home *** CD-ROM | disk | FTP | other *** search
- #define INCL_WIN
- #define INCL_GPI
- #include <malloc.h>
- #include <stdio.h>
- #include <os2.h>
-
- #include "Test.H"
- #include "MDI.H"
-
- VOID EXPENTRY MDIInitialize (HAB);
- MRESULT EXPENTRY RootWndProc (HWND, USHORT, MPARAM, MPARAM) ;
- MRESULT EXPENTRY ChildWndProc (HWND, USHORT, MPARAM, MPARAM) ;
-
- HAB hab ;
- HWND hwndRoot;
-
- PCHAR pszTitles[] = {"White", "Blue", "Red", "Pink", "Green", "Cyan", "Yellow"};
- PCHAR pszProg = "Test.EXE";
-
- VOID main (VOID)
- {HMQ hmq ;
- HWND hwndFrame, hwndClient ;
- QMSG qmsg ;
- ULONG flCreateFlags = FCF_STANDARD | FCF_NOBYTEALIGN;
- PCHAR pszDeskData;
- hab = WinInitialize (0) ;
- hmq = WinCreateMsgQueue (hab, 0) ;
- MDIInitialize (hab);
- hwndFrame = MDICreateDesktop (RootWndProc, flCreateFlags, "",
- NULL, IDR_RESOURCES, &hwndClient, 100, 99, "E~xit", "~Window");
- if (hwndFrame = NULL) return;
- pszDeskData = (PCHAR) WinSendMsg (hwndClient, MDI_MSG_LOCATE_DESKTOP_DATA, NULL, NULL);
- hwndRoot = hwndClient;
- while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
- WinDispatchMsg (hab, &qmsg) ;
- WinDestroyMsgQueue (hmq) ;
- WinTerminate (hab) ;
- }
-
- MRESULT EXPENTRY RootWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
- {HWND hwndFrame, hwndClient ;
- COLOR clr;
- ULONG flCreateFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_ICON | FCF_SHELLPOSITION | FCF_NOBYTEALIGN;
- PCHAR pszDocData, pszInstData;
- switch (msg)
- {case WM_COMMAND:
- switch (LOUSHORT (mp1))
- {case IDM_WHITE:
- case IDM_BLUE:
- case IDM_RED:
- case IDM_PINK:
- case IDM_GREEN:
- case IDM_CYAN:
- case IDM_YELLOW:
- clr = LOUSHORT (mp1) - IDM_WHITE;
- hwndFrame = MDICreateDocument (ChildWndProc, hwndRoot, flCreateFlags,
- pszTitles[clr], NULL, IDR_RESOURCES, &hwndClient, 100, 100);
- if (hwndFrame == NULL) break;
- pszDocData = (PCHAR) WinSendMsg (hwndClient, MDI_MSG_LOCATE_DOCUMENT_DATA, NULL, NULL);
- pszInstData = (PCHAR) WinSendMsg (hwndClient, MDI_MSG_LOCATE_INSTANCE_DATA, NULL, NULL);
- WinSetWindowULong (hwndClient, QWL_USER, clr);
- break;
- }
- break;
- }
- return MDIDesktopWndProc (hwnd, msg, mp1, mp2) ;
- }
-
- MRESULT EXPENTRY ChildWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
- {HPS hps;
- RECTL rcl;
- COLOR clr;
- switch (msg)
- {case WM_PAINT:
- hps = WinBeginPaint (hwnd, NULL, NULL);
- clr = WinQueryWindowULong (hwnd, QWL_USER);
- WinQueryWindowRect (hwnd, &rcl);
- WinFillRect (hps, &rcl, clr);
- WinEndPaint (hps);
- return NULL;
- }
- return MDIDocumentWndProc (hwnd, msg, mp1, mp2) ;
- }