写着写着就困了....

看这些测量数据就算了,是对各种函数的练习

#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
//声明全局数据:类名
static TCHAR szClassName[] = TEXT("MyWindows");
HWND hwnd;
MSG msg; //注册窗口类
WNDCLASS wndclass; wndclass.hInstance = hInstance;
wndclass.lpszClassName = szClassName;
wndclass.cbClsExtra = ;
wndclass.cbWndExtra = ;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszMenuName = NULL;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.style = CS_HREDRAW; if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("this program must run in Windows NT!"), szClassName, MB_ICONERROR);
return ;
} hwnd = CreateWindow(
szClassName,
TEXT("MyFirstPractice"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
,
,
NULL,
NULL,
hInstance,
NULL
); ShowWindow(hwnd, nShowCmd);
UpdateWindow(hwnd); while (GetMessage(&msg, NULL, , ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} return msg.wParam;
} LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static int cxClient, cyClient;
static HPEN hPen,hOldPen;
static HBRUSH hBrush, hOldBrush; POINT apt[];
switch (message)
{
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
//1.先绘制两条虚线
//设置画笔
hPen = CreatePen(PS_DOT, 0.1, RGB(,,));
hOldPen=SelectObject(hdc, hPen);
//开始绘制
MoveToEx(hdc, cxClient / , , NULL);
LineTo(hdc, cxClient / , cyClient); MoveToEx(hdc, , cyClient/, NULL);
LineTo(hdc, cxClient, cyClient/);
//还原画笔
SelectObject(hdc, hOldPen); //2.绘制头部(直径240)蓝色
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc,hBrush);
Ellipse(hdc, cxClient / - , cyClient / - , cxClient/ + , cyClient/ + );
SelectObject(hdc, hOldBrush); //3.画脸(和头内切直径200)白色
//hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH);
//默认是白色,已经替换回来了
Ellipse(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient / + ); //4.画眼睛(长60,宽50)
Ellipse(hdc, cxClient / - , cyClient / - , cxClient / , cyClient / - );
Ellipse(hdc, cxClient / + , cyClient / - , cxClient / , cyClient / - ); //5.画眼珠
hBrush = (HBRUSH)GetStockObject(BLACK_BRUSH);
hOldBrush = SelectObject(hdc, hBrush); Ellipse(hdc, cxClient / - , cyClient / - , cxClient / - , cyClient / - );
Ellipse(hdc, cxClient / + , cyClient / - , cxClient / + , cyClient / - ); SelectObject(hdc, hOldBrush);
//6.加上眼白
hOldBrush = SelectObject(hdc, GetStockObject(WHITE_BRUSH));
Ellipse(hdc, cxClient / - , cyClient / - , cxClient / - , cyClient / - );
Ellipse(hdc, cxClient / + , cyClient / - , cxClient / + , cyClient / - ); SelectObject(hdc, hOldBrush);
//7.加上鼻子
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush=SelectObject(hdc, hBrush);
Ellipse(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient / - );
SelectObject(hdc, hOldBrush); //8.加上鼻子到嘴上的线
MoveToEx(hdc, cxClient / , cyClient / - ,NULL);
LineTo(hdc, cxClient / , cyClient/ - ); //9.画上嘴巴
Arc(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient/ - ,
cxClient / - , cyClient / - , cxClient / + , cyClient / - ); //10.画上胡须
//左
MoveToEx(hdc, cxClient / - , cyClient / - , NULL);
LineTo(hdc, cxClient / - , cyClient / - );
MoveToEx(hdc, cxClient / - , cyClient / - , NULL);
LineTo(hdc, cxClient / -, cyClient / -);
MoveToEx(hdc, cxClient / - , cyClient / - , NULL);
LineTo(hdc, cxClient / - , cyClient / - );
//右
MoveToEx(hdc, cxClient / + , cyClient / - , NULL);
LineTo(hdc, cxClient / + , cyClient / - );
MoveToEx(hdc, cxClient / + , cyClient / - , NULL);
LineTo(hdc, cxClient / + , cyClient / - );
MoveToEx(hdc, cxClient / + , cyClient / - , NULL);
LineTo(hdc, cxClient / + , cyClient / - ); //11.画身体,矩形蓝色
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
Rectangle(hdc, cxClient / - , cyClient / , cxClient / + , cyClient / + );
SelectObject(hdc, hOldBrush); //12.画肚子
Ellipse(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient / + );
//覆盖多余长度
hPen = CreatePen(PS_SOLID, , RGB(, , ));
hOldPen = SelectObject(hdc, hPen);
Arc(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient / + , cxClient / + , cyClient / , cxClient / - , cyClient / );
SelectObject(hdc, hOldPen);
//13.项圈
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
RoundRect(hdc, cxClient / - , cyClient / - , cxClient / + , cyClient / + , , );
SelectObject(hdc, hOldBrush);
//14.铃铛
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
Ellipse(hdc, cxClient / - , cyClient / , cxClient / + , cyClient / +); //15.铃铛上的线
RoundRect(hdc, cxClient / - , cyClient / + , cxClient / + , cyClient / + , , );
SelectObject(hdc, hOldBrush);
//16.铃铛孔和线
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
Ellipse(hdc, cxClient / - , cyClient / + , cxClient / + , cyClient / + );
MoveToEx(hdc, cxClient / , cyClient / + , NULL);
LineTo(hdc, cxClient / , cyClient / + );
SelectObject(hdc, hOldBrush);
//17.口袋
Pie(hdc, cxClient / - , cyClient / , cxClient / + , cyClient / + , cxClient / - , cyClient / + , cxClient / + , cyClient / + ); //18.画腿(用扇形挡住)
Pie(hdc, cxClient / - , cyClient / + , cxClient / + , cyClient / + , cxClient / + , cyClient / + , cxClient / - , cyClient / + );
hPen = CreatePen(PS_SOLID, , RGB(, , ));
hOldPen = SelectObject(hdc, hPen);
MoveToEx(hdc, cxClient / - , cyClient / + , NULL);
LineTo(hdc, cxClient / + , cyClient / + );
SelectObject(hdc, hOldPen); //19.画脚
Ellipse(hdc, cxClient / - , cyClient / + , cxClient / - , cyClient / + );
Ellipse(hdc, cxClient / + , cyClient / + , cxClient / + , cyClient / + ); //20两个手
hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
apt[].x = cxClient / - ;
apt[].y = cyClient / + ;
apt[].x = cxClient / - ;
apt[].y = cyClient / + ;
apt[].x = cxClient / - ;
apt[].y = cyClient / + ;
apt[].x = cxClient / - ;
apt[].y = cyClient / + ;
Polygon(hdc, apt, );
SelectObject(hdc, hOldBrush);
Ellipse(hdc, cxClient / - , cyClient / + , cxClient / - , cyClient / + ); hBrush = CreateSolidBrush(RGB(, , ));
hOldBrush = SelectObject(hdc, hBrush);
apt[].x = cxClient / + ;
apt[].y = cyClient / + ;
apt[].x = cxClient / + ;
apt[].y = cyClient / + ;
apt[].x = cxClient / + ;
apt[].y = cyClient / + ;
apt[].x = cxClient / + ;
apt[].y = cyClient / + ;
Polygon(hdc, apt, );
SelectObject(hdc, hOldBrush);
Ellipse(hdc, cxClient / + , cyClient / + , cxClient / + , cyClient / + ); //画线覆盖多余线条
hPen = CreatePen(PS_SOLID, , RGB(,,));
hOldPen = SelectObject(hdc, hPen); MoveToEx(hdc, cxClient / -, cyClient / +, NULL);
LineTo(hdc, cxClient / - , cyClient / + ); MoveToEx(hdc, cxClient / + , cyClient / + , NULL);
LineTo(hdc, cxClient / + , cyClient / + ); SelectObject(hdc, hOldPen); EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
//销毁创建的画笔对象
DeleteObject(hPen);
PostQuitMessage();
return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
}

学习windows编程 day4 之 盯裆猫的更多相关文章

  1. 学习windows编程 day4 之 绘制随机矩形和peekMessage

    #include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...

  2. 学习windows编程 day4 之 自定义映射

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  3. 学习windows编程 day4 之视口和窗口

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  4. 学习windows编程 day4 之 多边矩形填充

    #include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...

  5. 学习windows编程 day4 之 矩形的操作

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  6. 学习windows编程 day4 之 映射模式

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  7. 学习windows编程 day4 之 设置画刷

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  8. 有一定基础的 C++ 学习者该怎样学习 Windows 编程?

    人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...

  9. 我为什么学习Windows编程

    前一段时间在看TCP/IP,在图书馆里面找了不少的书,其中有几本书还是不错的.比如: <Windows网络与通信程序设计(第二版)> 王艳平著 <WinSock网络编程经络> ...

随机推荐

  1. Delphi/XE2 使用TIdHttp控件下载Https协议服务器文件[转]

    之前的一篇博文详细描述了使用TIdhttp控件下载http协议的文件,在我项目的使用过程中发现对于下载Https协议中的文件与Http协议的文件不同,毕竟Https在HTTP协议基础上增加了SSL协议 ...

  2. CS、IP和PC寄存器

    CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址) ...

  3. React 组件

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  4. MES模块

    基础数据管理:产品模型.工厂模型.工艺模型 仓储管理 成本管理 绩效管理 看板管理 日志管理 设备管理:工装管理.设计器具管理.设备保养管理.设备备件管理.设备采集管理.设备点检管理.设备故障管理.设 ...

  5. r=a*(1-sinx)

    a=-2*pi:.001:2*pi; %设定角度b=(1-sin(a)); %设定对应角度的半径polar(a, b,'r') %绘图 夏目漱石“今夜月色很好” 王家卫“我已经很久没有坐过摩托车了,也 ...

  6. 聊聊我怎么系统学习Linux技能并快速提高的

    随着电子信息科技时代的发展,学会使用计算机在我们的生活中成为了必不可少的一项技能.而作为计算机中的三大操作系统之一的Linux更是饱受计算机爱好者们的喜爱.今天我们就来和大家一起聊一聊Linux操作系 ...

  7. BZOJ2008 JSOI2010连通数(floyd+bitset)

    一直不明白为什么要用floyd求传递闭包,直接搜不是更快嘛……不过其实可以用bitset优化,方法也比较显然.bitset是真的神奇啊,好多01状态且转移相似的东西都可以用这个优化一下. #inclu ...

  8. 【刷题】AtCoder Regular Contest 001

    A.センター採点 题意:给一个只包含1.2.3.4的字符串,求出现次数最多和最少的字符 做法:还能怎么做... #include<bits/stdc++.h> #define ui uns ...

  9. binary search模板总结

    二分查找算法是最常用的一种高效算法,所以本文将常见的情形做一个总结,得到一个二分查找的模板,方便应对各种二分查找中的问题. 当前有一个有序的数列: 1, 5, 9 [每个数字都是唯一的] 1, 2, ...

  10. 分别用postman和python做post请求接口功能测试

    前几天,在做一个post请求的接口功能测试的时候,发现数据始终无法入库, 认真加仔细检查了请求的url.方式.参数,均没有问题 找到技术确认,原来是需要传json格式数据 在头信息中加上类型,body ...