第5章,[Win32 章节] :直线练习程序1

发布时间:2026/9/11 18:16:39

第5章,[Win32 章节] :直线练习程序1 专栏导航上一篇第5章[Win32 章节] 绘制直线三回到目录下一篇第5章[Win32 章节] 直线练习程序2本节前言对于本节所讲解的知识有可能你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点请你自行查阅。我呢也会提到一部分的参考课节。但是呢你不应该依赖于我的主动提及。最好呢你自己能够多去了解和查看本专栏目录。学习本节之前需要先学习以下的先修课节。参考课节第5章[Win32 章节] 绘制直线一参考课节第5章[Win32 章节] 绘制直线二参考课节第5章[Win32 章节] 绘制直线三在佩措尔德原教材里面他在讲解完了直线的知识以后直接就给出了一个程序是绘制正弦波的程序。画正弦波的程序我们也会给出。但是我觉得直接给出这么难得程序还是突兀了一些。在给出正弦波程序之前我们先来几个练习程序。本节我们给出的程序它使用两种方法来绘制直线且用直线段来绘制矩形。我们开始。一. 本节程序/*------------------------------------------------------------ LX_Line01 -- 用两种方法通过绘制直线的方式来绘制矩形。 水饺编程2026 ------------------------------------------------------------*/ #include windows.h LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] TEXT(LX_Line01); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc WndProc; wndclass.cbClsExtra 0; wndclass.cbWndExtra 0; wndclass.hInstance hInstance; wndclass.hIcon LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName NULL; wndclass.lpszClassName szAppName; if (!RegisterClass(wndclass)) { MessageBox(NULL, TEXT(注册窗口类失败), szAppName, MB_ICONERROR); return 0; } hwnd CreateWindow(szAppName, // window class name TEXT(直线练习01), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(msg, NULL, 0, 0)) { TranslateMessage(msg); DispatchMessage(msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; int i, length; TCHAR str[30]; POINT arr_pt00[5] { 100, 30, 200, 30, 200, 60, 100, 60, 100, 30 }; POINT arr_pt01[5] { 100, 230, 200, 230, 200, 260, 100, 260, 100, 230 }; switch (message) { case WM_CREATE: return 0; case WM_PAINT: hdc BeginPaint(hwnd, ps); MoveToEx(hdc, arr_pt00[0].x, arr_pt00[0].y, NULL); for (i 1; i 5; i) LineTo(hdc, arr_pt00[i].x, arr_pt00[i].y); length wsprintf(str, TEXT(使用 MovetoEx 和 LineTo 来绘制矩形)); TextOut(hdc, 300, 36, str, length); Polyline(hdc, arr_pt01, 5); length wsprintf(str, TEXT(使用 Polyline 来绘制矩形)); TextOut(hdc, 300, 236, str, length); EndPaint(hwnd, ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }二. 程序编译在我这里我使用 VS2019 新建了一个解决方案并将解决方案名称和项目名称都命名为【LX_Line01】。然后呢我在项目里面添加了一个源文件文件名为【WinMain.cpp】。源文件中的代码就是本篇文章第一分节中的代码。编译好了程序以后运行结果如下。图1结束语本节程序还是比较简单的。下一节我们来绘制一个复杂一些的图。专栏导航上一篇第5章[Win32 章节] 绘制直线三回到目录下一篇第5章[Win32 章节] 直线练习程序2
延伸阅读

更多相关文章

2026/9/1 6:43:57

C++函数化编程实战:学生成绩管理系统设计与算法实现

1. 项目概述与核心价值最近在带几个刚学完C基础语法的学弟学妹做项目,发现他们最头疼的就是不知道如何把书本上的零散知识点(比如数组、函数、结构体)串成一个能实际运行的程序。正好,一个经典的“学生成绩管理系统”需求摆在了面…

2026/9/9 1:42:59

Ubuntu下ChatGLM2-6B环境搭建与P-Tuning微调实战

1. 项目概述最近在Ubuntu系统上搭建ChatGLM2-6B环境并进行P-Tuning微调训练时,踩了不少坑。作为一个开源的中文大语言模型,ChatGLM2-6B在中文处理方面表现优异,但在实际部署和训练过程中会遇到各种问题。本文将详细记录从环境搭建到微调训练的…

2026/9/10 19:14:19

Shell变量基础与进阶:从入门到精通

Shell 变量基础知识 变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过正确地调用内存空间中变量的名字就可以取出与变量对应的数据。 变量的内容一般要加双引号,以防止出错,特别是当值里的内容之间有空格时…

2026/9/11 18:13:13

第33篇-架构评估(二):ATAM 方法与评估实战

【软考系统架构设计师全链路通关实战】第 33 篇:架构评估(二):ATAM 方法与评估实战 本系列定位:以软考系统架构设计师(高级)考试为主线,语言无关的架构方法论视角,覆盖官…

2026/9/11 18:13:13

深度迁移学习水质预测算法源码解析与实战指南

简介:基于深度迁移学习的水质预测研究算法源码,是一份面向计算机、数学、电子信息等专业课程设计、期末大作业及毕设项目的完整工程代码。项目以水质预测为应用场景,覆盖数据加载、时间特征生成、模型构建、迁移学习训练和结果评估等环节&…

2026/9/11 18:13:13

第34篇-CBAM 成本效益分析与架构脆弱性

【软考系统架构设计师全链路通关实战】第 34 篇:CBAM 成本效益分析与架构脆弱性 本系列定位:以软考系统架构设计师(高级)考试为主线,语言无关的架构方法论视角,覆盖官方教程(第二版)…

2026/9/11 18:08:12

【Python 基础】FastAPI ORM 操作MySql 实战使用详解

目录 一、前言 二、FastAPI ORM介绍 2.1 什么是 ORM 2.2 ORM 的优势 2.3 ORM 常用框架 2.4 ORM的使用流程 三、FastAPI ORM 使用 3.1 前置准备 3.1.1 安装依赖包 3.2 ORM 基本使用 3.2.1 创建数据库 3.2.2 创建会话工厂 3.2.3 新增数据 3.2.4 修改数据 3.2.5 查询…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码