All pastes #839388 Raw Edit

Miscellany

public cpp v1 · immutable
#839388 ·published 2007-12-31 00:18 UTC
rendered paste body
#define WINVER 0x500#include <windows.h>int sinp = 0, sinusindex, sinus[1440], scroller_index, xpos = 360, text_length;char* sinus_text = "ZOXC, DET FUNGERER! WOHOO! :) ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";HICON hIcon;HBITMAP scroller_font, buffer;BITMAP bm;RECT rc;PAINTSTRUCT ps;HDC hdcWindow, hdcMemory, hdcBuffer;BOOL CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){	switch (Message) {		case WM_COMMAND:		{			switch (LOWORD(wParam)) {				case 1:					SendMessage(hwnd, WM_CLOSE, (WPARAM)0, (LPARAM)0);				break;			}		}		break;		case WM_TIMER:		{			if (scroller_font) {				xpos--;				if (xpos < -(text_length * 32)) xpos = 360;				sinp++;				if (sinp >= 1440) sinp -= 1440;				sinusindex = sinp;				sinusindex += 32;				if (sinusindex >= 1440) sinusindex -= 1440;				InvalidateRect(hwnd, &rc, 0);			}		}		break;		case WM_PAINT:		{			if (scroller_font) {				hdcWindow = BeginPaint(hwnd, &ps);				FillRect(hdcBuffer, &rc, (HBRUSH)CreateSolidBrush(0xFFFFFF));				for (scroller_index = 0; scroller_index <= text_length; scroller_index++) {					int x;					for (x = 0; x < 32; x++) {						sinusindex += 1;						if (sinusindex >= 1440) sinusindex -= 1440;						BitBlt(hdcBuffer, (scroller_index * 32) + (x + xpos), sinus[sinusindex], 1, 32, hdcMemory, ((sinus_text[scroller_index] - ' ') * 32 + x), 0, SRCCOPY);					}				}                BitBlt(hdcWindow, 0, 0, rc.right, rc.bottom, hdcBuffer, 0, 0, SRCCOPY);				EndPaint(hwnd, &ps);			}		}		break;        case WM_ERASEBKGND:             if(wParam == hwnd)                return 1;        break;		case WM_CTLCOLORDLG:        case WM_CTLCOLORSTATIC:			return (LRESULT)(HBRUSH)CreateSolidBrush(0xFFFFFF);		break;		case WM_LBUTTONDOWN:			SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);		break;		case WM_INITDIALOG:		{			GetObject(scroller_font, sizeof(bm), &bm);			GetClientRect(hwnd, &rc);			text_length = strlen(sinus_text);			hdcMemory = CreateCompatibleDC(hdcWindow);			SelectObject(hdcMemory, scroller_font);			hdcBuffer = CreateCompatibleDC(hdcWindow);			if(hdcBuffer==NULL)			MessageBox(0, "damn!", "", 0);			buffer = CreateCompatibleBitmap(hdcBuffer, rc.right, rc.bottom);			SelectObject(hdcBuffer, buffer);			int i;			for (i = 0; i < 1440; i++)				sinus[i] = sin(i * 3.1415926 / 360) * 60 + 70;			SetWindowText(hwnd, "GDI Sine Scroller");			//SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_COMPOSITED);			SendMessage(hwnd, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)hIcon);			SetTimer(hwnd, 1, 10, NULL);		}		break;		case WM_CLOSE:		{			KillTimer(hwnd, 1);			EndDialog(hwnd, 0);		}		break;		case WM_DESTROY:		    DeleteDC(hdcMemory);		    DeleteObject(scroller_font);		    DeleteDC(hdcBuffer);		    DeleteDC(buffer);			PostQuitMessage(0);		break;	}	return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){     hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(300));	scroller_font = LoadBitmap(hInstance, MAKEINTRESOURCE(400));	DialogBox(hInstance, MAKEINTRESOURCE(1000), 0, &WndProc);	return 0;}