|
|
1.1 ! root 1: /*--------------------------------------------------- ! 2: PATTERNS.C -- Select GPI Patterns from Dialog Box ! 3: ---------------------------------------------------*/ ! 4: ! 5: #define INCL_WIN ! 6: #define INCL_GPI ! 7: ! 8: #include <os2.h> ! 9: #include <stddef.h> ! 10: #include "patterns.h" ! 11: ! 12: typedef struct ! 13: { ! 14: SHORT sPattern ; ! 15: SHORT sColor ; ! 16: BOOL fBorder ; ! 17: } ! 18: PATTERNSDATA ; ! 19: ! 20: typedef PATTERNSDATA FAR *PPATTERNSDATA ; ! 21: ! 22: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ; ! 23: ! 24: HAB hab ; ! 25: ! 26: int main (void) ! 27: { ! 28: static CHAR szClientClass[] = "Patterns" ; ! 29: HMQ hmq ; ! 30: HWND hwndClient, hwndFrame ; ! 31: QMSG qmsg ; ! 32: ULONG flFrameFlags = FCF_STANDARD ; ! 33: ULONG flFrameStyle = WS_VISIBLE ; ! 34: ! 35: hab = WinInitialize (0) ; ! 36: hmq = WinCreateMsgQueue (hab, 0) ; ! 37: ! 38: WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ; ! 39: ! 40: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, flFrameStyle, ! 41: &flFrameFlags, szClientClass, ! 42: szClientClass, ! 43: 0L, NULL, ID_RESOURCE, &hwndClient) ; ! 44: ! 45: while (WinGetMsg (hab, &qmsg, NULL, 0, 0)) ! 46: WinDispatchMsg (hab, &qmsg) ; ! 47: ! 48: WinDestroyWindow (hwndFrame) ; ! 49: WinDestroyMsgQueue (hmq) ; ! 50: WinTerminate (hab) ; ! 51: return 0 ; ! 52: } ! 53: ! 54: MRESULT EXPENTRY PatternDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 55: { ! 56: static PATTERNSDATA pdLocal ; ! 57: static PPATTERNSDATA ppdCurrent ; ! 58: ! 59: switch (msg) ! 60: { ! 61: case WM_INITDLG: ! 62: ppdCurrent = MPFROMP (mp2) ; ! 63: pdLocal = *ppdCurrent ; ! 64: ! 65: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK, ! 66: MPFROM2SHORT (TRUE, 0), NULL) ; ! 67: ! 68: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK, ! 69: MPFROM2SHORT (TRUE, 0), NULL) ; ! 70: ! 71: WinSendDlgItemMsg (hwnd, IDD_BORDER, BM_SETCHECK, ! 72: MPFROM2SHORT (pdLocal.fBorder, 0), NULL) ; ! 73: ! 74: WinSetFocus (HWND_DESKTOP, ! 75: WinWindowFromID (hwnd, pdLocal.sPattern)) ; ! 76: return 1 ; ! 77: ! 78: case WM_CONTROL: ! 79: if (SHORT1FROMMP (mp1) >= IDD_DENSE1 && ! 80: SHORT1FROMMP (mp1) <= IDD_HALFTONE) ! 81: { ! 82: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK, ! 83: MPFROM2SHORT (FALSE, 0), NULL) ; ! 84: ! 85: pdLocal.sPattern = SHORT1FROMMP (mp1) ; ! 86: ! 87: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK, ! 88: MPFROM2SHORT (TRUE, 0), NULL) ; ! 89: } ! 90: ! 91: else if (SHORT1FROMMP (mp1) >= IDD_BKGRND && ! 92: SHORT1FROMMP (mp1) <= IDD_LIGHTGRAY) ! 93: { ! 94: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK, ! 95: MPFROM2SHORT (FALSE, 0), NULL) ; ! 96: ! 97: pdLocal.sColor = SHORT1FROMMP (mp1) ; ! 98: ! 99: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK, ! 100: MPFROM2SHORT (TRUE, 0), NULL) ; ! 101: } ! 102: return 0 ; ! 103: ! 104: case WM_COMMAND: ! 105: switch (COMMANDMSG(&msg)->cmd) ! 106: { ! 107: case DID_OK: ! 108: pdLocal.fBorder = (BOOL) WinSendDlgItemMsg (hwnd, ! 109: IDD_BORDER, BM_QUERYCHECK, NULL, NULL) ; ! 110: ! 111: *ppdCurrent = pdLocal ; ! 112: ! 113: WinDismissDlg (hwnd, TRUE) ; ! 114: return 0 ; ! 115: ! 116: case DID_CANCEL: ! 117: WinDismissDlg (hwnd, FALSE) ; ! 118: return 0 ; ! 119: } ! 120: break ; ! 121: } ! 122: return WinDefDlgProc (hwnd, msg, mp1, mp2) ; ! 123: } ! 124: ! 125: MRESULT EXPENTRY AboutDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 126: { ! 127: switch (msg) ! 128: { ! 129: case WM_COMMAND: ! 130: switch (COMMANDMSG(&msg)->cmd) ! 131: { ! 132: case DID_OK: ! 133: case DID_CANCEL: ! 134: WinDismissDlg (hwnd, TRUE) ; ! 135: return 0 ; ! 136: } ! 137: break ; ! 138: } ! 139: return WinDefDlgProc (hwnd, msg, mp1, mp2) ; ! 140: } ! 141: ! 142: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 143: { ! 144: static CHAR szAppName [] = "PATTERNS" ; ! 145: static CHAR szKeyName [] = "SETTINGS" ; ! 146: static PATTERNSDATA pdCurrent = { IDD_DENSE1, IDD_BKGRND, TRUE } ; ! 147: static SHORT cxClient, cyClient ; ! 148: HPS hps ; ! 149: POINTL ptl ; ! 150: SHORT sDataLength ; ! 151: ! 152: switch (msg) ! 153: { ! 154: case WM_CREATE: ! 155: sDataLength = sizeof pdCurrent ; ! 156: ! 157: WinQueryProfileData (hab, szAppName, szKeyName, &pdCurrent, ! 158: &sDataLength) ; ! 159: return 0 ; ! 160: ! 161: case WM_SIZE: ! 162: cxClient = SHORT1FROMMP (mp2) ; ! 163: cyClient = SHORT2FROMMP (mp2) ; ! 164: return 0 ; ! 165: ! 166: case WM_COMMAND: ! 167: switch (COMMANDMSG(&msg)->cmd) ! 168: { ! 169: case IDM_PATTERNS: ! 170: if (WinDlgBox (HWND_DESKTOP, hwnd, PatternDlgProc, ! 171: NULL, IDD_PATTERNS, &pdCurrent)) ! 172: ! 173: WinInvalidateRect (hwnd, NULL, FALSE) ; ! 174: return 0 ; ! 175: ! 176: case IDM_ABOUT: ! 177: WinDlgBox (HWND_DESKTOP, hwnd, AboutDlgProc, ! 178: NULL, IDD_ABOUT, NULL) ; ! 179: return 0 ; ! 180: } ! 181: break ; ! 182: ! 183: case WM_PAINT: ! 184: hps = WinBeginPaint (hwnd, NULL, NULL) ; ! 185: GpiErase (hps) ; ! 186: ! 187: GpiSetColor (hps, pdCurrent.sColor - IDD_BKGRND + ! 188: CLR_BACKGROUND) ; ! 189: GpiSetPattern (hps, pdCurrent.sPattern - IDD_DENSE1 + ! 190: PATSYM_DENSE1) ; ! 191: ptl.x = cxClient / 4 ; ! 192: ptl.y = cyClient / 4 ; ! 193: GpiMove (hps, &ptl) ; ! 194: ! 195: ptl.x *= 3 ; ! 196: ptl.y *= 3 ; ! 197: GpiBox (hps, pdCurrent.fBorder ? DRO_OUTLINEFILL : DRO_FILL, ! 198: &ptl, 0L, 0L) ; ! 199: ! 200: WinEndPaint (hps) ; ! 201: return 0 ; ! 202: ! 203: case WM_CLOSE: ! 204: if (MBID_YES == WinMessageBox (HWND_DESKTOP, hwnd, ! 205: "Save current settings?", szAppName, 0, ! 206: MB_YESNO | MB_ICONQUESTION)) ! 207: ! 208: WinWriteProfileData (hab, szAppName, szKeyName, &pdCurrent, ! 209: sizeof pdCurrent) ; ! 210: break ; ! 211: } ! 212: return WinDefWindowProc (hwnd, msg, mp1, mp2) ; ! 213: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.