当前位置 博文首页 > jtwqwq的博客:翁恺老师C语言程序设计网课(18)

    jtwqwq的博客:翁恺老师C语言程序设计网课(18)

    作者:[db:作者] 时间:2021-08-19 09:49

    ACLLib 的介绍

    是一个可以用C语言写出图形界面的程序的函数库。(几位浙大老师编写)基于Win32API的函数库,实际提供了一个.c和两个.h,以GPL的方式开源放在github上。
    纯教学用途!!但是其思想、编程模型可以借鉴。可以写一些小游戏啥的玩。

    WIN32API

    WIN32API从第一个32位的windows开始就出现了。API指的是Application Programming Interface,翻译为“应用程序编程接口。它是个纯C的函数库,让我们可以写windows的应用程序,过去的很多windows程序都是用这个方式做出来的。(现在有更好的编程模型)
    首先讲一下main()函数,作为C语言的入口函数,但是其实他和C语言本身无关。(main不是C语言的关键字)其实是启动代码需要main,启动代码可以调用我们写的代码。
    对于WIN32来说,我们需要的启动函数是WinMain()
    在这里插入图片描述
    我们现在的疑问是:
    在这里插入图片描述
    产生窗口:窗口结构(一个结构)
    在窗口中画东西:DC(设备上下文?)
    如何得到用户的键鼠动作:我们需要知道windows的消息是什么,消息循环,消息处理代码
    所以这些其实对初学者太难了。

    创建ACLLib程序

    像文件中提到的,在其他大多数开发环境中实际上都是要先创立项目再放源代码,哪怕只有一个源代码文件。这次我们就不得不这样做。
    新项目的类型选择windows application,在另存为中新建一个文件夹(有的环境如Visual Studio会自动建好一个目录,Dev C++没,需要自己手动操作)
    在这里插入图片描述
    会出现这样一个东西,保存。
    然后把老师分享的两个文件放进文件夹中,在Dev C++中选择项目-添加,添加这两个文件(可以看到左边一栏项目管理中这时出现了这两个文件)
    然后选择项目-项目属性-参数,Linker一列是空的,点击 加入库或者对象,找到安装devc++的目录-mingw目录-lib文件夹-libwinmm.a文件,添加进来。
    在这里插入图片描述
    然后把这8个文件都加进来……
    然后把自动生成的 main函数清空,写如下代码

    #include "acllib.h"
    int Setup()//这里的启动函数
    {
    	initWindow("test",100,100,200,200);//窗口名称为test,在100 100处画一个200 200的窗口
    	return 0;
    }
    

    再运行就能得到该图形界面的窗口。
    在这里插入图片描述
    画图

    beginPaint();//开始画图
    line(20,20,100,100);//从20 20到100 100画条线
    endPaint();//结束画图
    

    在这里插入图片描述
    如果写上initConsole();(这时头文件要加上#include<stdio.h>) 就可以使用printf()和scanf()函数了。这样可以让用户自定义窗口大小和画线长了。

    基本绘图函数

    关于开源文件、使用说明,老师都已放在MOOC即此链接中。可以自己去尝试绘制图形、做程序。

    cs