windows api 实现一个客户端界面

这篇博客主要讲如何通过纯windows api来实现一个客户端界面,不借助mfc、qt等类库,只使用windows api

做什么客户端好呢? 我大二的数据结构的大作业是实现一个图书管理系统,当时作业的要求只能使用c或c++,导致我们班的作业全是在控制台下的。因为当时能写图形界面的同学,要么是用java,要么是用c#,会用c和c++写界面的,还没有。可惜当时由于大作业比较赶,做出来的东西并不那么好看,这里我将重写当时的大作业,通过图书管理系统这个例子来引导你如何通过windows api实现一个客户端界面

当时我就决定要写个图形界面,而且在接触c++的时候,我就了解到用c和c++写图形界面一般有两种方法,mfc和qt,前者是微软基础类库(Microsoft Foundation Classes),而后者是由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。

简单的介绍这两个东西,微软基础类库是通过c++将windows api封装起来,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。什么意思呢?我们来回顾一下基本的知识,api是什么,api是应用程序编程接口(Application Programming Interface)的简称,它是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。api说白了就是一些已经实现好某些特定功能的函数,mfc则将这些函数封装起来成一个个的类。这样,我们通过类去产生对象来编程比通过直接调用一个个函数要方便的多,在减少工作量的同时也不容易出错。

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

如果说哪个框架好,其实很难说,各有各的好处,mfc是微软公司自己开发的类库,对自己开发的api进行封装,专一性强,但缺点是只能在windows下开发图形界面,而qt是跨平台的,除了能开发windows下的图形界面,你还能用qt开发ios和android等等其他平台的图形界面。

既然已经有了现成的框架,那我为什么还要用windows api去写图形界面呢?

因为无论是哪个框架,本质上都是对windows api的封装。你学哪个框架,框架这个东西,都有可能会过时,而windows api不会

其次,我写的图形界面,只是一个图书管理系统,并不大,windows api还能胜任,当如果我的工程是比较大的,windows api就胜任不了了,因为用windows api开发,效率太低了,也难以维护

在边讲边写这个图形界面的时候,我会就我认为比较重要的api做解释,我不可能去解释每一个我用到的api,想知道一个api实现什么功能,怎么使用,最好的方法是去官网查询api

我们这个图书管理系统有什么功能呢?基本的图书管理肯定是要有的,再加上用户登录等等常见的功能,前端就用windows api实现,那么数据存放在哪里呢?我大二的大作业是存放在文件里的,因为那时候还没有学习数据库,现在我用mysql数据库存放数据

有些比较重要的概念,我先提前说说

什么是句柄

整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。

简单来说,句柄就是一个整数,它用来唯一标识一个对象,比如一个按钮,一个窗口

什么是回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

那么,我们就开始啦

在博客里面,我不会放上全部的代码,你可以在我的github上面找到全部的源代码和资源

猜你喜欢

转载自blog.csdn.net/forDreamYue/article/details/80510460