Windows 编程学习小记

最近开始忙一个项目,这个项目本来是我一个保研的同学的导师给他做,他把我也拉上了。正好最近开始选毕业设计导师,我就选了这位导师,并且说这个项目可以当作毕业设计来做。嗯……不错,如果这学期搞定下学期学校这边就没事,可以安心去实习了。

这个项目不是太难,需要写一个应用程序:从一个特定格式的文件中读取和分析数据,然后分类统计出来。如果是我自己使用这个程序的话我马上就可以开始动手,估计几天就可以搞定。不过这个程序最终是要给一个教授用的,我不得不考虑人机交互界面了,让他去敲命令是不可能的。他也希望最终程序是那种直观的图形界面,点点鼠标距可以操作的。

但我之前一直是在 Linux 环境下基于 shell 编程,没有任何这方面的经验,所以问题的重心变成了如何实现图形界面,当然是在 Windows 环境下。

我第一个想到的就是用 Visual C++ 去实现,这几天也看了相关方面的一些资料,大致了解了一些。编写一个 Windows 程序和 shell 程序还是有很大差别的。基于控制台或者 shell 的程序很少有和用户交互的地方,当输入一条命令后期望会很快结束并产生一些输出,或者程序开始干活不用再管它。但一个 Windows 程序则不一样,有着大量的用户交互。Windows 程序是基于窗口和事件的。程序创建了一个窗口,等待事件的发生,比如用户点击鼠标,按下键盘等,事件发生后系统会向窗口传递一个消息。程序接下需要做的就是陷入一个循环当中,接受消息然后根据消息类型来进行相应的操作。

编写 Windows 程序需要用到 WinAPI, 也就是Windows 应用程序接口。但是 WinAPI 是基于 C 语言的,并且有数千个复杂的系统调用,学习起来很困难。MFC(Microsoft Foundation Classes), 是一个类库(class libraries),以 C++ 类的形式封装了 WinAPI, 并且包含一个应用程序框架,能够简化和减少代码的编写。当然 MFC 已经很老了,也并不是唯一选择,还有很多类似的框架。

试着熟悉 Visual studio 这个强大的 IDE, 大一学 C 语言编程的时候用到过,但只用到很初级的功能,后来就没有用过。Visual C++ 有很多实用的功能,比如各种向导,可以减少很多的代码编写,还有方便的在 MSDN 上查找资料等。

在我痛苦的学习使用 VC 和 MFC 时,突然想到:我为什么要拘泥于它们呢?编写图形界面这些并不是唯一的选择。我为了做这个要学习一大堆东西,并且是我不喜欢的平台,不喜欢的语言,然后丢弃再也不用。

我想到了之前学过一段时间的 Python 和接触过一点的 Pyqt, 嗯……用这个做多好,反正都是从头开始学。Pyqt 不但是开源的并且是多平台,不只是在 Windows 上使用,还有完善的文档。也很喜欢 Python 编程语言,正好凑着这次机会深入学习。

发表评论

电子邮件地址不会被公开。 必填项已用*标注