|
|
1.1 ! root 1: /*---------------------------------------------------------------------------*\ ! 2: | RANDOM OBJECTS MODULE ! 3: | ! 4: | segment: _TEXT (DOS16) ! 5: | created: 19-Oct-90 ! 6: | history: 19-Oct-90 <chriswil> created. ! 7: | ! 8: \*---------------------------------------------------------------------------*/ ! 9: ! 10: #include <windows.h> ! 11: #include "gdidemo.h" ! 12: #include "draw.h" ! 13: ! 14: /*---------------------------------------------------------------------------*\ ! 15: | CREATE DRAW WINDOW PROCEDURE ! 16: | ! 17: | created: 20-May-91 ! 18: | history: 20-May-91 <chriswil> created. ! 19: | ! 20: \*---------------------------------------------------------------------------*/ ! 21: HWND FAR CreateDrawWindow(HWND hWndClient, int nItem) ! 22: { ! 23: HANDLE hInstance; ! 24: MDICREATESTRUCT mcs; ! 25: ! 26: ! 27: hInstance = GETINSTANCE(hWndClient); ! 28: ! 29: /* ! 30: ** Initialize the MDI create struct for creation of the ! 31: ** test window. ! 32: */ ! 33: mcs.szClass = DRAWCLASS; ! 34: mcs.szTitle = DRAWTITLE; ! 35: mcs.hOwner = hInstance; ! 36: mcs.x = CW_USEDEFAULT; ! 37: mcs.y = CW_USEDEFAULT; ! 38: mcs.cx = CW_USEDEFAULT; ! 39: mcs.cy = CW_USEDEFAULT; ! 40: mcs.style = 0l; ! 41: mcs.lParam = (LONG)nItem; ! 42: ! 43: return((HWND)SendMessage(hWndClient,WM_MDICREATE,NULL,(LONG)(LPMDICREATESTRUCT)&mcs)); ! 44: } ! 45: ! 46: ! 47: /*---------------------------------------------------------------------------*\ ! 48: | DRAW WINDOW PROCEDURE ! 49: | ! 50: | created: 20-May-91 ! 51: | history: 20-May-91 <chriswil> created. ! 52: | ! 53: \*---------------------------------------------------------------------------*/ ! 54: LONG APIENTRY DrawProc(HWND hWnd, UINT wMsg, WPARAM wParam, LONG lParam) ! 55: { ! 56: switch(wMsg) ! 57: { ! 58: case WM_CREATE: ! 59: DrawCreateProc(hWnd); ! 60: break; ! 61: ! 62: ! 63: case WM_COMMAND: ! 64: DrawCommandProc(hWnd,wParam,lParam); ! 65: break; ! 66: ! 67: ! 68: case WM_TIMER: ! 69: DrawObject(hWnd); ! 70: break; ! 71: ! 72: ! 73: case WM_PAINT: ! 74: DrawPaintProc(hWnd); ! 75: break; ! 76: ! 77: ! 78: case WM_DESTROY: ! 79: DrawDestroyProc(hWnd); ! 80: break; ! 81: ! 82: ! 83: default: ! 84: return(DefMDIChildProc(hWnd,wMsg,wParam,lParam)); ! 85: } ! 86: return(0l); ! 87: } ! 88: ! 89: ! 90: /*---------------------------------------------------------------------------*\ ! 91: | DRAW CREATE PROCEDURE ! 92: | ! 93: | created: 20-May-91 ! 94: | history: 20-May-91 <chriswil> created. ! 95: | ! 96: \*---------------------------------------------------------------------------*/ ! 97: BOOL DrawCreateProc(HWND hWnd) ! 98: { ! 99: PDRAWDATA pdd; ! 100: ! 101: ! 102: if(AllocWindowInfo(hWnd,sizeof(DRAWDATA))) ! 103: { ! 104: if(pdd = (PDRAWDATA)LockWindowInfo(hWnd)) ! 105: { ! 106: pdd->nObject = 0; ! 107: ! 108: UnlockWindowInfo(hWnd); ! 109: ! 110: SetTimer(hWnd,1,50,NULL); ! 111: return(TRUE); ! 112: } ! 113: FreeWindowInfo(hWnd); ! 114: } ! 115: return(FALSE); ! 116: } ! 117: ! 118: ! 119: /*---------------------------------------------------------------------------*\ ! 120: | DRAW COMMAND PROCEDURE ! 121: | ! 122: | created: 20-May-91 ! 123: | history: 20-May-91 <chriswil> created. ! 124: | ! 125: \*---------------------------------------------------------------------------*/ ! 126: BOOL DrawCommandProc(HWND hWnd, WPARAM wParam, LONG lParam) ! 127: { ! 128: hWnd = hWnd; ! 129: wParam = wParam; ! 130: lParam = lParam; ! 131: ! 132: return(TRUE); ! 133: } ! 134: ! 135: ! 136: /*---------------------------------------------------------------------------*\ ! 137: | DRAW PAINT PROCEDURE ! 138: | ! 139: | created: 20-May-91 ! 140: | history: 20-May-91 <chriswil> created. ! 141: | ! 142: \*---------------------------------------------------------------------------*/ ! 143: VOID DrawPaintProc(HWND hWnd) ! 144: { ! 145: HDC hDC; ! 146: PAINTSTRUCT ps; ! 147: ! 148: ! 149: if(hDC = BeginPaint(hWnd,&ps)) ! 150: EndPaint(hWnd,&ps); ! 151: ! 152: return; ! 153: } ! 154: ! 155: ! 156: /*---------------------------------------------------------------------------*\ ! 157: | DRAW DESTROY PROCEDURE ! 158: | ! 159: | created: 20-May-91 ! 160: | history: 20-May-91 <chriswil> created. ! 161: | ! 162: \*---------------------------------------------------------------------------*/ ! 163: VOID DrawDestroyProc(HWND hWnd) ! 164: { ! 165: KillTimer(hWnd,1); ! 166: FreeWindowInfo(hWnd); ! 167: return; ! 168: } ! 169: ! 170: ! 171: VOID DrawObject(HWND hWnd) ! 172: { ! 173: PDRAWDATA pdd; ! 174: RECT rect; ! 175: HDC hDC; ! 176: int x1,y1,x2,y2,x3,y3,x4,y4,r,g,b,nObject; ! 177: HBRUSH hBrush; ! 178: char szDebug[80]; ! 179: ! 180: ! 181: if(pdd = (PDRAWDATA)LockWindowInfo(hWnd)) ! 182: { ! 183: if(hDC = GetDC(hWnd)) ! 184: { ! 185: GetClientRect(hWnd,&rect); ! 186: ! 187: r = lRandom() % 255; ! 188: g = lRandom() % 255; ! 189: b = lRandom() % 255; ! 190: ! 191: if(hBrush = SelectObject(hDC,CreateSolidBrush(RGB(r,g,b)))) ! 192: { ! 193: x1 = lRandom() % rect.right; ! 194: y1 = lRandom() % rect.bottom; ! 195: x2 = lRandom() % rect.right; ! 196: y2 = lRandom() % rect.bottom; ! 197: x3 = lRandom() % rect.right; ! 198: y3 = lRandom() % rect.bottom; ! 199: x4 = lRandom() % rect.right; ! 200: y4 = lRandom() % rect.bottom; ! 201: ! 202: ! 203: nObject = lRandom() % 5; ! 204: ! 205: switch(nObject) ! 206: { ! 207: default: ! 208: case OBJ_RECTANGLE: ! 209: wsprintf(szDebug,"Rectangle(%d,%d,%d,%d)\n",x1,y1,x2,y2); ! 210: DEBUGOUT(szDebug); ! 211: Rectangle(hDC,x1,y1,x2,y2); ! 212: break; ! 213: ! 214: case OBJ_ELLIPSE: ! 215: wsprintf(szDebug,"Ellipse(%d,%d,%d,%d)\n",x1,y1,x2,y2); ! 216: DEBUGOUT(szDebug); ! 217: Ellipse(hDC,x1,y1,x2,y2); ! 218: break; ! 219: ! 220: ! 221: ! 222: case OBJ_ROUNDRECT: ! 223: wsprintf(szDebug,"RoundRect(%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3); ! 224: DEBUGOUT(szDebug); ! 225: RoundRect(hDC,x1,y1,x2,y2,x3,y3); ! 226: break; ! 227: ! 228: case OBJ_CHORD: ! 229: wsprintf(szDebug,"Chord(%d,%d,%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3,x4,y4); ! 230: DEBUGOUT(szDebug); ! 231: Chord(hDC,x1,y1,x2,y2,x3,y3,x4,y4); ! 232: break; ! 233: ! 234: case OBJ_PIE: ! 235: wsprintf(szDebug,"Pie(%d,%d,%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3,x4,y4); ! 236: DEBUGOUT(szDebug); ! 237: Pie(hDC,x1,y1,x2,y2,x3,y3,x4,y4); ! 238: break; ! 239: ! 240: } ! 241: ! 242: DeleteObject(SelectObject(hDC,hBrush)); ! 243: } ! 244: ReleaseDC(hWnd,hDC); ! 245: } ! 246: UnlockWindowInfo(hWnd); ! 247: } ! 248: return; ! 249: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.