Created
September 27, 2020 07:35
-
-
Save nicolas17/af0bf119b3486ab9add0cb2355ddc6d9 to your computer and use it in GitHub Desktop.
Microsoft's moo.cxx gdiplus test
This file contains hidden or 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 <stdio.h> | |
#include <math.h> | |
#include <windows.h> | |
#include <objbase.h> | |
#include <gdiplus.h> | |
// moo.cxx ran through the preprocessor, and replacing "GetDC(1-1)" with "dc" | |
// (apparently on newer Windows versions you're not allowed to use GetDC(NULL) | |
// to draw to the screen directly) | |
using namespace Gdiplus; | |
void draw(HDC dc) | |
{ | |
Graphics cow ( dc ) ; Pen Pen ( Color | |
( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ,(( 1 + 1 )* 1 -1 ), ( 1 + 1 )*( 1 + 1 )* ( ( 1 + 1 ) -1 -1), ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) , ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* 1 +( 1 + 1 ) ) ; cow. | |
DrawEllipse ( &Pen, ( ( 1 + 1 )* 1 +1 ) | |
* 1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , ( 1 + 1 )* 1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , 1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) ; cow. | |
DrawEllipse ( & Pen, (( 1 + 1 )* 1 +( 1 + 1 )+1 ) *1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 ))? | |
( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )): !( ( ( 1 + 1 )) | |
) + ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) - 1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) ; float | |
ooo[(( 1 + 1 )* 1 +1 )*( | |
1 +( 1 + 1 )* 1 )+1] ; float * Cow = ooo;* ( Cow++) = ( ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) ;*( Cow | |
++) = ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ,*( Cow++ ) = ( ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) ;*( Cow ++) = ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ,*( Cow++ | |
) = ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) + ( ( 1 + 1 )* ( 1 + 1 )* 1 +1 )*( ( 1 + 1 )* ( 1 + 1 )* | |
( 1 + 1 )* 1 +( 1 + 1 ) ) ; *(Cow++ ) = ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) + ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) + ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , * ( Cow++)= | |
( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) + 1*( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) , * (Cow++ ) = ( ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) + ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 ))); * | |
( Cow++ ) = ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ,*( Cow++ ) = ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 ))+ | |
( 1 + 1 )* ( 1 + 1 )* ( ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 )* ( 1 + 1 ) - ( ( 1 + 1 )* ( 1 + 1 ) + ( 1 + 1 ) + 1 )) ) ; GraphicsPath moon; moon.AddLines | |
(( PointF*) ooo, ( 1 + 1 )* 1 +1 +( 1 + 1 ) ) ; cow. | |
DrawPath ( &Pen, &moon ); | |
} | |
// everything else from http://winprog.org/tutorial/simple_window.html | |
const char g_szClassName[] = "myWindowClass"; | |
// Step 4: the Window Procedure | |
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) | |
{ | |
switch (msg) { | |
case WM_CLOSE: | |
DestroyWindow(hwnd); | |
break; | |
case WM_DESTROY: | |
PostQuitMessage(0); | |
break; | |
case WM_PAINT: | |
{ | |
PAINTSTRUCT ps; | |
HDC hdc = BeginPaint(hwnd, &ps); | |
draw(hdc); | |
EndPaint(hwnd, &ps); | |
} | |
default: | |
return DefWindowProc(hwnd, msg, wParam, lParam); | |
} | |
return 0; | |
} | |
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, | |
LPSTR lpCmdLine, int nCmdShow) | |
{ | |
WNDCLASSEX wc; | |
HWND hwnd; | |
MSG Msg; | |
GdiplusStartupInput gdiplusStartupInput; | |
ULONG_PTR gdiplusToken; | |
// Initialize GDI+. | |
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); | |
//Step 1: Registering the Window Class | |
wc.cbSize = sizeof(WNDCLASSEX); | |
wc.style = 0; | |
wc.lpfnWndProc = WndProc; | |
wc.cbClsExtra = 0; | |
wc.cbWndExtra = 0; | |
wc.hInstance = hInstance; | |
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); | |
wc.hCursor = LoadCursor(NULL, IDC_ARROW); | |
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); | |
wc.lpszMenuName = NULL; | |
wc.lpszClassName = g_szClassName; | |
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); | |
if (!RegisterClassEx(&wc)) { | |
MessageBox(NULL, "Window Registration Failed!", "Error!", | |
MB_ICONEXCLAMATION | MB_OK); | |
return 0; | |
} | |
// Step 2: Creating the Window | |
hwnd = CreateWindowEx( | |
WS_EX_CLIENTEDGE, | |
g_szClassName, | |
"moo.cxx", | |
WS_OVERLAPPEDWINDOW, | |
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, | |
NULL, NULL, hInstance, NULL); | |
if (hwnd == NULL) { | |
MessageBox(NULL, "Window Creation Failed!", "Error!", | |
MB_ICONEXCLAMATION | MB_OK); | |
return 0; | |
} | |
ShowWindow(hwnd, nCmdShow); | |
UpdateWindow(hwnd); | |
// Step 3: The Message Loop | |
while (GetMessage(&Msg, NULL, 0, 0) > 0) { | |
TranslateMessage(&Msg); | |
DispatchMessage(&Msg); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I guess for posterity I should put the result image here too: