Skip to content

Instantly share code, notes, and snippets.

@nicolas17
Created September 27, 2020 07:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicolas17/af0bf119b3486ab9add0cb2355ddc6d9 to your computer and use it in GitHub Desktop.
Save nicolas17/af0bf119b3486ab9add0cb2355ddc6d9 to your computer and use it in GitHub Desktop.
Microsoft's moo.cxx gdiplus test
#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;
}
@nicolas17
Copy link
Author

I guess for posterity I should put the result image here too:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment