Legend Since 1984
Cruising between Fantasy and Reality...

Sunday, May 21, 2006

MFC First Trial

以前用ANSI C++写过不少字符界面下程序。最近突发奇想,想把这些纯C++代码都移植到Windows GUI界面下。在没有耐心研究MFC的日子里,只能靠C#勉强度日。不过手工翻译C++到C#也不是一件随时到充满兴奋得工作。而且C#基于CLR中间运行时,不能指望每台机器上都有.NET Framework吧。而MFC是基于Native Code,执行速度继承了C++天生的优势;而且支持类库的静态编译,即使客户机上没有安装MFC的.dll,目标代码一样可以执行。

昨天半个下午加晚上研究了一下MFC的图形界面编程,今天捣鼓了一上午,把原来写的一个处理商人过河问题的字符界面程序移植到了MFC中。

1. 把自己写的模版类Stack和List用标准的STL类替换。分别是std::stack和std::vector。

2. 把原来的全局函数、全局变量都封装到一个类中,命名为TransactionHandler。
全局变量作为私有成员变量。
除main之外的函数作为私有方法。
main函数改写为公有方法void Run(void)。
原来需要进行输入的变量发到TransactionHandler的构造函数中进行初始化。
原来需要在屏幕上进行输出的内容用一个或多个公有成员来存放,这里使用的是一个STL容器。

3. 使用。
在MFC生成的处理按钮点击的函数中声明一个TranscationHandler,把必要的从图形界面下取得的参数传递给TransactionHandler的构造函数。
执行TranscationHandler.Run()。
之后可以在TranscationHandler的对象中提取运行的结果。比如把这些结果放到一个ListBox列表框中进行显示。
如果TranscationHandler.Run()有抛出异常,将在外部进行捕获。

没用MFC之前也移植过以前数据结构课设中写的Huffman编码的程序。不过图形界面是基于C#和.net framework的。必须手工把C++代码翻译成C#。现在直接用一个类对原先的事物处理逻辑进行封装,在调用MFC进行图形显示,实在是方便多了。


Posted by Picasa

MFC静态编译版本

Labels: ,

0 Comments:

Post a Comment

<< Home