|
|
1.1 ! root 1: /*-------------------------------------------------------------------- ! 2: SHOWBIT.C -- Loads Bitmap Resources from BITLIB.DLL and Draws Them ! 3: --------------------------------------------------------------------*/ ! 4: ! 5: #define INCL_DOS ! 6: #define INCL_WIN ! 7: #include <os2.h> ! 8: ! 9: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ; ! 10: ! 11: int main (void) ! 12: { ! 13: static CHAR szClientClass [] = "ShowBit" ; ! 14: static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | ! 15: FCF_SIZEBORDER | FCF_MINMAX | ! 16: FCF_SHELLPOSITION | FCF_TASKLIST ; ! 17: HAB hab ; ! 18: HMQ hmq ; ! 19: HWND hwndFrame, hwndClient ; ! 20: QMSG qmsg ; ! 21: ! 22: hab = WinInitialize (0) ; ! 23: hmq = WinCreateMsgQueue (hab, 0) ; ! 24: ! 25: WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ; ! 26: ! 27: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE, ! 28: &flFrameFlags, szClientClass, ! 29: " (Space bar or mouse click for next)", ! 30: 0L, NULL, 0, &hwndClient) ; ! 31: if (hwndFrame != NULL) ! 32: { ! 33: while (WinGetMsg (hab, &qmsg, NULL, 0, 0)) ! 34: WinDispatchMsg (hab, &qmsg) ; ! 35: ! 36: WinDestroyWindow (hwndFrame) ; ! 37: } ! 38: WinDestroyMsgQueue (hmq) ; ! 39: WinTerminate (hab) ; ! 40: return 0 ; ! 41: } ! 42: ! 43: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2) ! 44: { ! 45: static HMODULE hmodBitLib ; ! 46: static USHORT idBitmap = 1 ; ! 47: HBITMAP hbm ; ! 48: HPS hps ; ! 49: RECTL rcl ; ! 50: ! 51: switch (msg) ! 52: { ! 53: case WM_CREATE: ! 54: if (DosLoadModule (NULL, 0, "BITLIB", &hmodBitLib)) ! 55: { ! 56: WinMessageBox (HWND_DESKTOP, HWND_DESKTOP, ! 57: "Cannot load BITLIB.DLL library", ! 58: "ShowBit", 0, MB_OK | MB_ICONEXCLAMATION) ; ! 59: return 1 ; ! 60: } ! 61: return 0 ; ! 62: ! 63: case WM_CHAR: ! 64: if ( CHARMSG(&msg)->fs & KC_KEYUP || ! 65: !(CHARMSG(&msg)->fs & KC_VIRTUALKEY) || ! 66: !(CHARMSG(&msg)->vkey == VK_SPACE)) ! 67: break ; ! 68: ! 69: if (++idBitmap == 10) ! 70: idBitmap = 1 ; ! 71: ! 72: WinInvalidateRect (hwnd, NULL, FALSE) ; ! 73: return 0 ; ! 74: ! 75: case WM_BUTTON1DOWN: ! 76: if (++idBitmap == 10) ! 77: idBitmap = 1 ; ! 78: ! 79: WinInvalidateRect (hwnd, NULL, FALSE) ; ! 80: break ; ! 81: ! 82: case WM_PAINT: ! 83: hps = WinBeginPaint (hwnd, NULL, NULL) ; ! 84: GpiErase (hps) ; ! 85: ! 86: hbm = GpiLoadBitmap (hps, hmodBitLib, idBitmap, 0L, 0L) ; ! 87: ! 88: if (hbm != NULL) ! 89: { ! 90: WinQueryWindowRect (hwnd, &rcl) ; ! 91: ! 92: WinDrawBitmap (hps, hbm, NULL, (PPOINTL) &rcl, ! 93: CLR_NEUTRAL, CLR_BACKGROUND, DBM_STRETCH) ; ! 94: ! 95: GpiDeleteBitmap (hbm) ; ! 96: } ! 97: WinEndPaint (hps) ; ! 98: return 0 ; ! 99: ! 100: case WM_DESTROY: ! 101: DosFreeModule (hmodBitLib) ; ! 102: return 0 ; ! 103: } ! 104: return WinDefWindowProc (hwnd, msg, mp1, mp2) ; ! 105: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.