Created
February 26, 2014 02:19
-
-
Save SimpleDrunk/9222214 to your computer and use it in GitHub Desktop.
Merry Christmas Demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "Windows.h" | |
#include <vfw.h> | |
#include "resource.h" | |
#pragma comment(lib,"vfw32.lib") | |
#define ID_TIMER_MOVE 1 | |
int i, j; | |
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); | |
int WINAPI WinMain(HINSTANCE hInstance, | |
HINSTANCE hPrevInstance, | |
PSTR szCmdLine, | |
int iCmdShow) | |
{ | |
WNDCLASS wndclass; | |
MSG msg; | |
HWND hwnd; | |
static TCHAR szName[] = TEXT("MerryChristmas"); | |
wndclass.cbClsExtra = 0; | |
wndclass.cbWndExtra = 0; | |
wndclass.hbrBackground = CreateSolidBrush(RGB(10, 10, 10)); | |
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); | |
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); | |
wndclass.hInstance = hInstance; | |
wndclass.lpfnWndProc = WndProc; | |
wndclass.lpszClassName = szName; | |
wndclass.lpszMenuName = NULL; | |
wndclass.style = CS_HREDRAW | CS_VREDRAW; | |
if(!RegisterClass(&wndclass)) | |
{ | |
MessageBox(NULL, TEXT("This program requires Windows NT!"), | |
szName, MB_ICONERROR); | |
return 0; | |
} | |
int cx = GetSystemMetrics(SM_CXSCREEN); | |
int cy = GetSystemMetrics(SM_CYSCREEN); | |
i = cx/2 - 100; | |
j = cy/2 - 100; | |
hwnd = CreateWindow(szName, | |
TEXT("Demo"), | |
WS_POPUPWINDOW, | |
i, | |
j, | |
200, | |
200, | |
NULL, | |
NULL, | |
hInstance, | |
NULL); | |
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd,GWL_EXSTYLE) ^ 0x80000); | |
SetBkMode(GetDC(hwnd), TRANSPARENT); | |
SetLayeredWindowAttributes(hwnd,RGB(10, 10, 10), (BYTE)255, LWA_ALPHA|LWA_COLORKEY); | |
ShowWindow(hwnd, TRUE); | |
UpdateWindow(hwnd); | |
while(GetMessage(&msg, NULL, 0, 0)) | |
{ | |
TranslateMessage(&msg); | |
DispatchMessage(&msg); | |
} | |
return msg.wParam; | |
} | |
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | |
{ | |
static HRGN hRgn; | |
static HBITMAP hBmp; | |
BITMAP bmp; | |
static HDC hdc, hdcMem; | |
static HRGN hRgnWnd; | |
static int cxBmp, cyBmp; | |
PAINTSTRUCT ps; | |
HWND hwndMci; | |
switch(message) | |
{ | |
case WM_CREATE: | |
SetTimer(hwnd, ID_TIMER_MOVE, 20, NULL); | |
hBmp = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCE(IDB_BITMAP1)); | |
GetObject(hBmp, sizeof(BITMAP), &bmp); | |
cxBmp = bmp.bmWidth; | |
cyBmp = bmp.bmHeight; | |
hwndMci = MCIWndCreate(hwnd, ((LPCREATESTRUCT)lParam)->hInstance, MCIWNDF_SHOWNAME, TEXT("回梦游仙.mp3")); | |
ShowWindow(hwndMci, SW_HIDE); | |
MCIWndPlay(hwndMci); | |
return 0; | |
case WM_PAINT: | |
{ | |
hRgn = CreateRectRgn(2, 2, 196, 196); | |
hdc = BeginPaint(hwnd, &ps); | |
hdcMem = CreateCompatibleDC(hdc); | |
SelectObject(hdcMem, hBmp); | |
BitBlt(hdc, 0, 30, cxBmp, cyBmp, hdcMem, 0, 0, SRCCOPY); | |
SetTextColor(hdc, RGB(255, 0, 0)); | |
SetBkMode(hdc, TRANSPARENT); | |
TextOut(hdc, 5, 10, L"Merry Christmas!", 16); | |
SetWindowRgn(hwnd, hRgn, TRUE); | |
DeleteDC(hdcMem); | |
EndPaint(hwnd, &ps); | |
} | |
return 0; | |
case WM_TIMER: | |
{ | |
int xScreen = GetSystemMetrics(SM_CXSCREEN); | |
RECT rcWnd; | |
GetWindowRect(hwnd, &rcWnd); | |
i -= 2; | |
if(i < rcWnd.left - rcWnd.right) | |
i = xScreen; | |
MoveWindow(hwnd, i, j, rcWnd.right - rcWnd.left, rcWnd.bottom - rcWnd.top, TRUE); | |
} | |
return 0; | |
case WM_DESTROY: | |
KillTimer(hwnd, ID_TIMER_MOVE); | |
MCIWndDestroy(hwndMci); | |
DeleteObject(hBmp); | |
PostQuitMessage(0); | |
return 0; | |
} | |
return DefWindowProc(hwnd, message, wParam, lParam); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment