[游戏模版6] Win32 graph

简介:


 

>_<:there in the MyPaint(...) function respectively use Ellipse(...) draw ellipse, use RoundRect(...) draw rectangle whose angle is round, use Pie(...) draw sector also named fan shap, use Chord(...) draw  arch also named bow shaped.

>_<:the same with previous one, there I don't use message and just put the function of MyPaint(...) in the last of InitInstance(...)

  resourse.h
  StdAfx.h

main.cpp

复制代码
  1 #include "stdafx.h"
  2 #include "resourse.h"
  3 
  4 #define MAX_LOADSTRING 100
  5 
  6 // Global Variables:
  7 HINSTANCE hInst;                                // current instance
  8 TCHAR szTitle[MAX_LOADSTRING];                                // The title bar text
  9 TCHAR szWindowClass[MAX_LOADSTRING];                                // The title bar text
 10 HPEN hPen;
 11 HBRUSH hBru[4];
 12 int sBru[7]={HS_VERTICAL,HS_HORIZONTAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_BDIAGONAL};
 13 // Foward declarations of functions included in this code module:
 14 ATOM                MyRegisterClass(HINSTANCE hInstance);
 15 BOOL                InitInstance(HINSTANCE, int);
 16 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 17 LRESULT CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 18 void                MyPaint(HDC hdc);
 19 //========================================================================================
 20 int APIENTRY WinMain(HINSTANCE hInstance,
 21                      HINSTANCE hPrevInstance,
 22                      LPSTR     lpCmdLine,
 23                      int       nCmdShow)
 24 {
 25      // TODO: Place code here.
 26     MSG msg;
 27 
 28     MyRegisterClass(hInstance);//调用函数向系统注册窗口类别,输入参数hInstance是目前运行程序的对象代码;
 29 
 30     // 调用InitInstance函数,进行初始化操作;
 31     if (!InitInstance (hInstance, nCmdShow))
 32     {
 33         return FALSE;
 34     }
 35 
 36     // 消息循环(通过消息循环来获取信息,
 37     //进行必要的键盘信息转换而后将控制权交给操作系统,
 38     //有操作系统决定哪个程序的消息处理函数处理消息
 39     while (GetMessage(&msg, NULL, 0, 0)) //获取程序消息
 40     {
 41             TranslateMessage(&msg);//转换伪码及字符
 42             DispatchMessage(&msg);//将控制权交给系统,再有系统决定负责处理消息的程序;
 43     }
 44 
 45     return msg.wParam;
 46 }
 47 //=====================================================================================
 48 
 49 
 50 
 51 //=============================================================================================
 52 //在建立程序窗口实体之前,必须先定义一个窗口类别,其中包含所要建立窗口的信息,
 53 //并向系统注册,这里的MyRegisterClass函数就是进行定义及注册窗口类别的函数。
 54 //==============================================================================================
 55 ATOM MyRegisterClass(HINSTANCE hInstance)
 56 {
 57     WNDCLASSEX wcex;            //申请一个窗口类别“WNDCLASSEX”和结构”wcex“
 58                                 //--------------------------------------------------------------
 59                                 //定义vcex结构的各项信息,其中设定信息处理函数(lpfnWndProc)
 60                                 //为WNDPROC,类别名称为(lpszClassName)为”fe";
 61                                 //--------------------------------------------------------------
 62     wcex.cbSize = sizeof(WNDCLASSEX);
 63 
 64     wcex.style            = CS_HREDRAW | CS_VREDRAW;
 65     wcex.lpfnWndProc    = (WNDPROC)WndProc;
 66     wcex.cbClsExtra        = 0;
 67     wcex.cbWndExtra        = 0;
 68     wcex.hInstance        = hInstance;
 69     wcex.hIcon            = NULL;
 70     wcex.hCursor        = NULL;
 71     wcex.hCursor        = LoadCursor(NULL,IDC_ARROW);
 72     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
 73     wcex.lpszMenuName    = NULL;
 74     wcex.lpszClassName    = "fe";
 75     wcex.hIconSm        = NULL;
 76 
 77     return RegisterClassEx(&wcex);//调用RegisterClassEx函数注册类别,返回一个“ATOM"形态的字符串
 78                                   //此字符串即为类别名称”fe";
 79 }
 80 //============================================================================================
 81 
 82 
 83 //============================================================================================
 84 //按照前面所定义的窗口类别来建立并显示实际的程序窗口
 85 //============================================================================================
 86 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
 87 {
 88    HWND hWnd;
 89    HDC  hdc;
 90    int i;
 91    hInst = hInstance; // 把instance handle 储存在全局变量中;
 92 
 93    hWnd = CreateWindow("fe","绘图窗口",WS_OVERLAPPEDWINDOW,
 94       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 95                       //-----------------------------------------------
 96                       //调用CreateWindow函数来建立一个窗口对象
 97                       //第一个参数就是窗口建立依据的类别名称
 98                       //-----------------------------------------------
 99    if (!hWnd)
100    {
101       return FALSE;
102    }
103    //------------------------------------------------
104    //设定窗口的位置及窗口的大小,然后绘制显示在设备上
105    //-------------------------------------------------
106    MoveWindow(hWnd,10,10,600,450,true);//位置及大小
107    ShowWindow(hWnd, nCmdShow);//改定窗口显示时的状态
108    UpdateWindow(hWnd);//将窗口绘制在显示设备上
109 
110    hPen=CreatePen(PS_SOLID,3,RGB(0,255,0));
111    for(i=0;i<=3;i++)
112    {
113        hBru[i]=CreateHatchBrush(sBru[i],RGB(234,34,125));
114    }
115 
116    hdc=GetDC(hWnd);
117    MyPaint(hdc);
118    ReleaseDC(hWnd,hdc);
119 
120    return TRUE;
121 }
122 //============================================================================================
123 
124 
125 //============================================================================================
126 void MyPaint(HDC hdc)
127 {
128     SelectObject(hdc,hPen);
129 
130     SelectObject(hdc,hBru[0]);
131     Ellipse(hdc,20,20,270,150);
132     TextOut(hdc,120,160,"椭圆形",strlen("椭圆形"));
133 
134     SelectObject(hdc,hBru[1]);
135     RoundRect(hdc,300,20,550,150,30,30);
136     TextOut(hdc,400,160,"圆角矩形",strlen("圆角矩形"));
137 
138     SelectObject(hdc,hBru[2]);
139     Pie(hdc,20,210,270,340,50,50,300,300);
140     TextOut(hdc,120,350,"扇形",strlen("扇形"));
141 
142     SelectObject(hdc,hBru[3]);
143     Chord(hdc,300,210,550,340,50,50,600,300);
144     TextOut(hdc,400,350,"弓形",strlen("弓形"));
145 }
146 
147 
148 //============================================================================================
149 //在前面定义类别的时候把WndProc定义为消息处理函数(当某些外部消息发生时,会按消息的类型
150 //来决定该如何进行处理。此外该函数也是一个回叫函数(CALLBACK)(windows系统函数)每一个
151 //程序都会接收信息,选择性接受、处理;
152 //============================================================================================
153 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
154 {
155     PAINTSTRUCT ps;
156     HDC hdc;
157 
158     switch (message)                   //判断消息类型
159     {
160         case WM_PAINT:                //窗口重绘制
161             hdc = BeginPaint(hWnd, &ps);
162             EndPaint(hWnd, &ps);
163             break;
164         case WM_DESTROY:              //处理窗口结束消息
165             PostQuitMessage(0);
166             break;
167         default:
168             return DefWindowProc(hWnd, message, wParam, lParam);
169    }
170    return 0;
171 }
172 //============================================================================================
复制代码

 

标签:  Win32GRAPH


本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3732666.html ,如需转载请自行联系原作者
相关文章
|
域名解析 Linux Apache
搭建网站,和把大象装冰箱一样简单?
一个流行了很多年的梗,至今仍然热度不减,当年本山大叔在春晚上说出这个段子时,不知是不是预料到了很多人这辈子都指着这个笑话活着了。
2328 0
|
计算机视觉
《计算机视觉:模型、学习和推理》一2.2 联合概率
本节书摘来华章计算机《计算机视觉:模型、学习和推理》一书中的第2章 ,第2.2节, [英]西蒙J. D. 普林斯(Simon J. D. Prince)著苗启广 刘凯 孔韦韦 许鹏飞 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1391 0
|
13天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
8天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
5014 14
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
7天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
3590 8
|
10天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
4958 17
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
|
2天前
|
应用服务中间件 API 网络安全
3分钟汉化OpenClaw,使用Docker快速部署启动OpenClaw(Clawdbot)教程
2026年全新推出的OpenClaw汉化版,是基于Claude API开发的智能对话系统本土化优化版本,解决了原版英文界面的使用壁垒,实现了界面、文档、指令的全中文适配。该版本采用Docker容器化部署方案,开箱即用,支持Linux、macOS、Windows全平台运行,适配个人、企业、生产等多种使用场景,同时具备灵活的配置选项和强大的扩展能力。本文将从项目简介、部署前准备、快速部署、详细配置、问题排查、监控维护等方面,提供完整的部署与使用指南,文中包含实操代码命令,确保不同技术水平的用户都能快速落地使用。
1624 0
|
9天前
|
存储 人工智能 机器人
OpenClaw是什么?阿里云OpenClaw(原Clawdbot/Moltbot)一键部署官方教程参考
OpenClaw是什么?OpenClaw(原Clawdbot/Moltbot)是一款实用的个人AI助理,能够24小时响应指令并执行任务,如处理文件、查询信息、自动化协同等。阿里云推出的OpenClaw一键部署方案,简化了复杂配置流程,用户无需专业技术储备,即可快速在轻量应用服务器上启用该服务,打造专属AI助理。本文将详细拆解部署全流程、进阶功能配置及常见问题解决方案,确保不改变原意且无营销表述。
5345 5
|
11天前
|
人工智能 JavaScript 应用服务中间件
零门槛部署本地AI助手:Windows系统Moltbot(Clawdbot)保姆级教程
Moltbot(原Clawdbot)是一款功能全面的智能体AI助手,不仅能通过聊天互动响应需求,还具备“动手”和“跑腿”能力——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可接入Qwen、OpenAI等云端API,或利用本地GPU运行模型。本教程专为Windows系统用户打造,从环境搭建到问题排查,详细拆解全流程,即使无技术基础也能顺利部署本地AI助理。
7356 16