case WM_CREATE : gDC = WinGCreateDC (); // create a WinG DC memset (&bmi, 0, sizeof (bmi)); bmi.hdr.biSize = sizeof (bmi); WinGRecommendedDIBFormat (&bmi); // get the DIB format bmi.hdr.biBitCount = 8; iDir = (int) bmi.hdr.biHeight; // will be 1 or -1 // Setup your palette here hPal = SelectPalette (...); break; case WM_SIZE : { // note - a DIB width must be DWORD aligned bmi.hdr.biWidth = (LOWORD (lParam) + 3) & ~3; bmi.hdr.biHeight = HIWORD (lParam) * iDir; // pDIB points to the WinG DIB on return HBITMAP hbm = WinGCreateBitmap (gDC, &bmi, &pDIB); // attach DIB to the DC HBITMAP hPrevBm = (HBITMAP) SelectObject (gDC, hbm); DeleteObject (hPrevBm); break; } case WM_PAINT : { PAINTSTRUCT ps; BeginPaint (hWnd, &ps); SelectPalette (ps.hdc, hPal, FALSE); // set it to our palette RealizePalette (ps.hdc); ... // build up the image in pDIB WinGBitBlt (ps.hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top, gDC, ps.rcPaint.left, ps.rcPaint.top); EndPaint (hWnd, &ps); return (0); }