|
|
1.1 ! root 1: /*------------------------------------------------------------ ! 2: WELCOME2.C -- A Program that Creates Two Top-Level Windows ! 3: ------------------------------------------------------------*/ ! 4: ! 5: #include <os2.h> ! 6: #include <stddef.h> ! 7: ! 8: MRESULT EXPENTRY Client1WndProc (HWND, USHORT, MPARAM, MPARAM) ; ! 9: MRESULT EXPENTRY Client2WndProc (HWND, USHORT, MPARAM, MPARAM) ; ! 10: ! 11: int main (void) ! 12: { ! 13: static CHAR szClientClass1 [] = "Welcome1", ! 14: szClientClass2 [] = "Welcome2" ; ! 15: HAB hab ; ! 16: HMQ hmq ; ! 17: HWND hwndFrame1, hwndFrame2, hwndClient1, hwndClient2 ; ! 18: QMSG qmsg ; ! 19: ULONG flFrameFlags = FCF_STANDARD & ~FCF_MENU ; ! 20: ULONG flFrameStyle = WS_VISIBLE ; ! 21: ! 22: hab = WinInitialize (0) ; ! 23: hmq = WinCreateMsgQueue (hab, 0) ; ! 24: ! 25: WinRegisterClass ( ! 26: hab, /* Anchor block handle */ ! 27: szClientClass1, /* Name of class being registered */ ! 28: Client1WndProc, /* Window procedure for class */ ! 29: CS_SIZEREDRAW, /* Class style */ ! 30: 0) ; /* Extra bytes to reserve */ ! 31: ! 32: WinRegisterClass ( ! 33: hab, /* Anchor block handle */ ! 34: szClientClass2, /* Name of class being registered */ ! 35: Client2WndProc, /* Window procedure for class */ ! 36: CS_SIZEREDRAW, /* Class style */ ! 37: 0) ; /* Extra bytes to reserve */ ! 38: ! 39: hwndFrame1 = WinCreateStdWindow ( ! 40: HWND_DESKTOP, /* Parent window handle */ ! 41: flFrameStyle, /* Style of frame window */ ! 42: &flFrameFlags, /* Pointer to control data */ ! 43: szClientClass1, /* Client window class name */ ! 44: "Window No. 1", /* Title bar text */ ! 45: 0L, /* Style of client window */ ! 46: NULL, /* Module handle for resources */ ! 47: 0, /* ID of resources */ ! 48: &hwndClient1) ; /* Pointer to client window handle */ ! 49: ! 50: hwndFrame2 = WinCreateStdWindow ( ! 51: HWND_DESKTOP, /* Parent window handle */ ! 52: flFrameStyle, /* Style of frame window */ ! 53: &flFrameFlags, /* Pointer to control data */ ! 54: szClientClass2, /* Client window class name */ ! 55: "Window No. 2", /* Title bar text */ ! 56: 0L, /* Style of client window */ ! 57: NULL, /* Module handle for resources */ ! 58: 0, /* ID of resources */ ! 59: &hwndClient2) ; /* Pointer to client window handle */ ! 60: ! 61: while (WinGetMsg (hab, &qmsg, NULL, 0, 0)) ! 62: WinDispatchMsg (hab, &qmsg) ; ! 63: ! 64: WinDestroyWindow (hwndFrame1) ; ! 65: WinDestroyWindow (hwndFrame2) ; ! 66: WinDestroyMsgQueue (hmq) ; ! 67: WinTerminate (hab) ; ! 68: ! 69: return 0 ; ! 70: } ! 71: ! 72: MRESULT EXPENTRY Client1WndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 73: { ! 74: static CHAR szText [] = "Welcome to Window No. 1" ; ! 75: HPS hps ; ! 76: RECTL rcl ; ! 77: ! 78: switch (msg) ! 79: { ! 80: case WM_PAINT: ! 81: hps = WinBeginPaint (hwnd, NULL, NULL) ; ! 82: ! 83: WinQueryWindowRect (hwnd, &rcl) ; ! 84: ! 85: WinDrawText (hps, -1, szText, &rcl, ! 86: CLR_NEUTRAL, CLR_BACKGROUND, ! 87: DT_CENTER | DT_VCENTER | DT_ERASERECT) ; ! 88: ! 89: WinEndPaint (hps) ; ! 90: return 0 ; ! 91: } ! 92: return WinDefWindowProc (hwnd, msg, mp1, mp2) ; ! 93: } ! 94: ! 95: MRESULT EXPENTRY Client2WndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 96: { ! 97: static CHAR szText [] = "Welcome to Window No. 2" ; ! 98: HPS hps ; ! 99: RECTL rcl ; ! 100: ! 101: switch (msg) ! 102: { ! 103: case WM_PAINT: ! 104: hps = WinBeginPaint (hwnd, NULL, NULL) ; ! 105: ! 106: WinQueryWindowRect (hwnd, &rcl) ; ! 107: ! 108: WinDrawText (hps, -1, szText, &rcl, ! 109: CLR_NEUTRAL, CLR_BACKGROUND, ! 110: DT_CENTER | DT_VCENTER | DT_ERASERECT) ; ! 111: ! 112: WinEndPaint (hps) ; ! 113: return 0 ; ! 114: ! 115: case WM_CLOSE: ! 116: return 0 ; ! 117: } ! 118: return WinDefWindowProc (hwnd, msg, mp1, mp2) ; ! 119: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.