# include HBITMAP gwynL, gwyn; //These are our .bmp files. HBITMAP mgwynL, mgwyn; //These are masks we're gonna make because HBITMAP draw, drawmask;//transparentcy is too scary for windows. int frame = 0; //BOOL startup = TRUE; int frameWidth = 500; int frames = 4; int gwynpos = 0; int dir = 1; int gwyny; HBITMAP MakeMask(HBITMAP hbmColor, COLORREF ColorVanish) { HDC hdcmem, hdcmem2; HBITMAP hbmMask; BITMAP bmp; // Make Monochrome Mask of bitmap GetObject(hbmColor, sizeof(BITMAP), &bmp); hbmMask = CreateBitmap(bmp.bmWidth, bmp.bmHeight, 1, 1, NULL); // Ask windows to socialize with the driver and set me up with mem objs hdcmem = CreateCompatibleDC(0); hdcmem2 = CreateCompatibleDC(0); SelectObject(hdcmem, hbmColor); SelectObject(hdcmem2, hbmMask); // Now we can do the things. SetBkColor(hdcmem, ColorVanish); BitBlt(hdcmem2, 0,0, bmp.bmWidth, bmp.bmHeight, hdcmem, 0,0, SRCCOPY); BitBlt(hdcmem, 0,0, bmp.bmWidth, bmp.bmHeight, hdcmem2, 0,0, SRCINVERT); // Throw out garbage DeleteDC(hdcmem); DeleteDC(hdcmem2); return hbmMask; } // Let's make a Window's brain. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM NoOneCares, LPARAM NoOneCares2) { switch(msg) { case WM_PAINT: { if (dir == 0) { draw = gwynL; drawmask= mgwynL; } else { draw = gwyn; drawmask= mgwyn; } PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); HDC hdcmem = CreateCompatibleDC(hdc); SelectObject(hdcmem, drawmask); BitBlt(hdc, 0,0, frameWidth, 500, hdcmem, frame*frameWidth, 0, SRCAND); SelectObject(hdcmem, draw); BitBlt(hdc, 0,0, frameWidth, 500, hdcmem, frame*frameWidth, 0, SRCCOPY); //Clean it! DeleteDC(hdcmem); EndPaint(hwnd, &ps); } break; case WM_TIMER: { // We need to know our direction. int scrn_x = GetSystemMetrics(SM_CXSCREEN); if (dir > 0) { if (scrn_x-500 > gwynpos){ gwynpos = (gwynpos + 15); } else{ //startup = TRUE; dir = 0; } } else { if (gwynpos > -50) { gwynpos = gwynpos - 15; } else { //startup = TRUE; dir = 1; } } frame = (frame+1) % frames; //if (startup){ // if (frame > 2){ // startup = FALSE; // } //} //else //{ // frame = frame; //Control Start up frames here. //} // SetWindowPos(hwnd, NULL, gwynpos, gwyny, 0, 0, SWP_NOSIZE |SWP_NOZORDER); InvalidateRect(hwnd, NULL, FALSE); UpdateWindow(hwnd); } break; case WM_CREATE: { } break; case WM_CLOSE: { DestroyWindow(hwnd); } break; case WM_DESTROY: { PostQuitMessage(0); } break; default: { return DefWindowProc(hwnd, msg, NoOneCares, NoOneCares2); } } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE freeNull, LPSTR argv, int ncmdshow) { WNDCLASSEX wc ={0}; const char WIN_CLASS[] = "Foxxer"; // Set the props. wc.hInstance = GetModuleHandle(NULL); wc.lpszClassName = WIN_CLASS; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Let's put ourselves at the bottom left, so Gwyn's feet touch. int screen_y = GetSystemMetrics(SM_CYSCREEN); gwyny = screen_y -525; // Give Windows our new window, then ask for it back RegisterClassEx(&wc); HWND hwnd = CreateWindowEx( WS_EX_LAYERED, WIN_CLASS, NULL, WS_POPUP, 0, gwyny, 500, 500, NULL, NULL, GetModuleHandle(NULL), NULL ); // Let's load our bmp This will need to be moved somewhere else. gwyn = (HBITMAP)LoadImage(NULL, "Gwyn_R.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE); gwynL = (HBITMAP)LoadImage(NULL, "Gwyn_L.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE); mgwyn = MakeMask(gwyn, RGB(255,255,255)); mgwynL= MakeMask(gwynL, RGB(255,255,255)); // Final Window tweaks SetLayeredWindowAttributes(hwnd, RGB(0,0,0), 0, LWA_COLORKEY); //Start timer, need to tweak SetTimer(hwnd, 1, 150, NULL); //Launch! ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd); MSG msg = {0}; while (GetMessage(&msg, NULL, 0,0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } // Clean up! KillTimer(hwnd, 1); DeleteObject(gwyn); // So sad :( return 0; }