Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define WIN32_LEAN_AND_MEAN
- #include <Windows.h>
- #include <assert.h>
- #include "resource.h"
- static const char SZ_CLASSNAME[] = "DEXTOP";
- static BOOL s_bActivated = FALSE;
- static HBITMAP s_hCurBitmap = NULL;
- static HINSTANCE s_hInstance;
- static BITMAP s_bmCurBitmap;
- DWORD __stdcall STWinProc(HWND hWnd, UINT uMsg, WPARAM wParam,
- LPARAM lParam) {
- switch (uMsg) {
- case WM_CREATE:
- s_hCurBitmap = LoadImageA(s_hInstance,
- MAKEINTRESOURCEA(IDB_ALMONDS_RAW),
- IMAGE_BITMAP, 0, 0, 0);
- assert(s_hCurBitmap);
- GetObject(s_hCurBitmap, sizeof(BITMAP), &s_bmCurBitmap);
- return 0;
- case WM_LBUTTONDOWN:
- s_bActivated = !s_bActivated;
- if (s_bActivated) s_hCurBitmap = LoadImageA(s_hInstance,
- MAKEINTRESOURCEA(IDB_ALMONDS_ACTIVATED),
- IMAGE_BITMAP, 0, 0, 0);
- else s_hCurBitmap = LoadImageA(s_hInstance,
- MAKEINTRESOURCEA(IDB_ALMONDS_RAW),
- IMAGE_BITMAP, 0, 0, 0);
- assert(s_hCurBitmap);
- GetObject(s_hCurBitmap, sizeof(BITMAP), &s_bmCurBitmap);
- InvalidateRect(hWnd, NULL, FALSE);
- return 0;
- case WM_PAINT:
- {
- HANDLE hDC, hMemDC;
- HGDIOBJ hOldBitmap;
- PAINTSTRUCT ps;
- int iOldMode;
- RECT rectClient;
- assert(GetClientRect(hWnd, &rectClient));
- hDC = BeginPaint(hWnd, &ps);
- hMemDC = CreateCompatibleDC(hDC);
- hOldBitmap = SelectObject(hMemDC, s_hCurBitmap);
- iOldMode = SetStretchBltMode(hDC, HALFTONE);
- StretchBlt(hDC, rectClient.left, rectClient.top,
- rectClient.right - rectClient.left,
- rectClient.bottom - rectClient.top, hMemDC, 0, 0,
- s_bmCurBitmap.bmWidth, s_bmCurBitmap.bmHeight,
- SRCCOPY);
- SetStretchBltMode(hDC, iOldMode);
- SelectObject(hMemDC, hOldBitmap);
- DeleteDC(hMemDC);
- EndPaint(hWnd, &ps);
- return 0;
- }
- case WM_SIZE:
- InvalidateRect(hWnd, NULL, FALSE);
- return 0;
- case WM_CLOSE:
- DestroyWindow(hWnd);
- return 0;
- case WM_DESTROY:
- ExitProcess(0);
- return 0;
- }
- return DefWindowProc(hWnd, uMsg, wParam, lParam);
- }
- DWORD __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
- PSZ pszCmdLine, int nCmdShow) {
- HANDLE hWnd;
- MSG msg;
- WNDCLASSEXA wcxa = {
- sizeof(WNDCLASSEXA),
- 0,
- STWinProc,
- 0, 0,
- hInstance,
- LoadIconA(NULL, MAKEINTRESOURCEA(IDI_APPLICATION)),
- LoadCursorA(NULL, MAKEINTRESOURCEA(IDC_ARROW)),
- GetSysColorBrush(COLOR_BACKGROUND),
- NULL, SZ_CLASSNAME, NULL
- };
- s_hInstance = hInstance;
- assert(RegisterClassExA(&wcxa));
- hWnd = CreateWindowA(SZ_CLASSNAME, "Background",
- WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, NULL, NULL,
- hInstance, 0);
- ShowWindow(hWnd, SW_SHOW);
- while (GetMessage(&msg, 0, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement