All pastes #748986 Raw Edit

Someone

public c v1 · immutable
#748986 ·published 2007-10-25 10:37 UTC
rendered paste body
#include <windows.h>LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);char szClassName[] = "MainWnd";HINSTANCE hInstance;HBITMAPCreateBitmapMask (HBITMAP hbmColour, COLORREF crTransparent){  HDC hdcMem, hdcMem2;  HBITMAP hbmMask;  BITMAP bm;  /* Create monochrome (1 bit) mask bitmap. */  GetObject(hbmColour, sizeof (BITMAP), &bm);  hbmMask = CreateBitmap (bm.bmWidth, bm.bmHeight, 1, 1, NULL);  /* Get some HDCs that are compatible with the display driver */  hdcMem = CreateCompatibleDC (0);  hdcMem2 = CreateCompatibleDC (0);  /*    SelectBitmap (hdcMem, hbmColour);    SelectBitmap (hdcMem2, hbmMask);  */  /* Set the background colour of the colour image to the colour     you want to be transparent. */  SetBkColor (hdcMem, crTransparent);  /* Copy the bits from the colour image to the B+W mask... everything     with the background colour ends up white while everythig else ends up     black...Just what we wanted. */  BitBlt (hdcMem2, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);  /* Take our new mask and use it to turn the transparent colour in our     original colour image to black so the transparency effect will     work right. */  BitBlt (hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem2, 0, 0, SRCINVERT);  /* Clean up. */  DeleteDC (hdcMem);  DeleteDC (hdcMem2);  return hbmMask;}int WINAPIWinMain (HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine,         int nCmdShow){  HWND hwnd;  MSG msg;  WNDCLASSEX wincl;  hInstance = hInst;  wincl.cbSize = sizeof (WNDCLASSEX);  wincl.cbClsExtra = 0;  wincl.cbWndExtra = 0;  wincl.style = 0;  wincl.hInstance = hInstance;  wincl.lpszClassName = szClassName;  wincl.lpszMenuName = NULL; //No menu  wincl.lpfnWndProc = WindowProcedure;  wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW); //Color of the window  wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); //EXE icon  wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); //Small program icon  wincl.hCursor = LoadCursor (NULL, IDC_ARROW); //Cursor    if (!RegisterClassEx (&wincl))    return 0;  hwnd =    CreateWindowEx (/* No extended window styles */                    0,                     /* Class name */                    szClassName,                     /* Window caption */                    "",                     WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX,                    /* Let Windows decide the left and top positions of                       the window */                    CW_USEDEFAULT, CW_USEDEFAULT,                    /* Width and height of the window */                    400, 400, NULL, NULL, hInstance, NULL);  /* Make the window visible on the screen */  ShowWindow (hwnd, nCmdShow);  /* Run the message loop */  while (GetMessage (&msg, NULL, 0, 0))    {      TranslateMessage (&msg);      DispatchMessage (&msg);    }  return msg.wParam;}LRESULT CALLBACKWindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){  PAINTSTRUCT ps;  HDC hdc;  HBITMAP bitmap = NULL;  switch (message)    {    case WM_CREATE:      {        HICON hIcon, hIconSm;        /* get a drawing context */        hdc = GetDC (hwnd);        /* load the small icon */        hIcon = LoadImage (NULL, "aver.ico", IMAGE_ICON, 32, 32,                           LR_LOADFROMFILE);        if (hIcon != 0)          SendMessage (hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);        else          {            hIconSm = LoadImage (NULL, "aver.ico", IMAGE_ICON, 16, 16,                                 LR_LOADFROMFILE);            if (hIconSm != 0)              SendMessage (hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);            else              MessageBox (hwnd, "Could not load either big or small icon!",                         "Error", MB_OK | MB_ICONERROR);          }        /* load the bitmap */        bitmap = LoadImage (NULL, "test.bmp", IMAGE_BITMAP, 161, 161,                            LR_LOADFROMFILE);        if (bitmap != 0)          GetObject (bitmap, sizeof (bitmap), &bitmap);        else          MessageBox (hwnd, "Could not load Bitmap!", "Error",                      MB_OK | MB_ICONEXCLAMATION);        /*        g_hbmMask = CreateBitmapMask (g_hbmBall, RGB (0, 0, 0));        if (g_hbmMask == NULL)          MessageBox (hwnd, "Could not create mask!", "Error",                      MB_OK | MB_ICONEXCLAMATION);        */      }      break;    case WM_PAINT:      {        BITMAP bm;        PAINTSTRUCT ps;        HDC hdc = BeginPaint (hwnd, &ps);        HDC hdcMem = CreateCompatibleDC (hdc);        HBITMAP hbmOld = SelectObject (hdcMem, bitmap);        GetObject (bitmap, sizeof (bm), &bm);        /* BitBlt (hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); */        SelectObject (hdcMem, hbmOld);        DeleteDC (hdcMem);        TextOut (hdc, 15, 3, "Hello, world!", 13);        EndPaint (hwnd, &ps);      }      break;    case WM_DESTROY:      PostQuitMessage (0);      break;    default:      return DefWindowProc (hwnd, message, wParam, lParam);    }  return 0;}