学习笔记之深入浅出MFC 第6章 Console程序介绍

本节介绍一下Console程序,虽然主要介绍MFC程序,但是在这个过程中会经常用到Console程序做事例介绍,而且本着全面的原则,也方便大家以后使用Console程序做一些小的编程工作,在这里我觉着还是有必要介绍一下Console程序的。

    说道Windows程序,一定会有WinMain、消息循环、窗口函数。即使你只是产生一个对话框(DialogBox)或消息窗(MessageBox),也有隐藏在WindowsAPI(DialogBoxMessageBox)内的消息循环和窗口函数。

    大家有没有觉得跟以前学习C语言或C++编程完全不一样了,以前程序只需要有main()函数和各种函数就可以了,简简单单的。而现在怎么会那么复杂,有那么多的消息循环等东西。

    其实说到Win32程序,并不是每个都如WindowsGUI程序那么复杂可怖。在VisualC++中有一个“DOS-like”程序,可以调用部分的、不牵扯到图形使用者接口(GUI)的Win32 API。这种程序就是console程序。

1Console程序与DOS程序的差别

其实DOS程序和console程序是不能混为一谈的,下面对这两种非常相似的程序做下比较:

    1)编写方式

    Windows环境下的DOS Box中或是在Windows版本的各种C++编译器套件的集成开发环境(IDE)中,利用Windows编译器和链接器做出来的程序,都是所谓的Win32程序。

    过去在DOS环境下开发的程序,称为DOS程序。

    两种程序都是以main为程序进入点,都可以调用C runtime函数,不同之处是Console程序还可以调用不牵扯GUIWin32 API函数,而DOS程序不能。(解释一下:C runtime函数就是指标准的C语言函数)

    2)程序功能

    DOS程序可以在WindowsDOS Box中运行,但是无法使用windowsAPI函数;

    Console程序当然能在windows下运行,而且能够调用API函数,所以它可以使用Windows提供的各种高级功能。可以产生进程(processes,产生执行线程(threads)、取得虚拟内存的信息、刺探操作系统的各种数据。但是不能调用与GUI有关的各种API函数,所以不会有华丽的外表。

    3)可运行的文件格式

    DOS程序是所谓的MZ格式。Console程序的格式则和所有的Win32程序一样,是所谓的PEPortableExecutable)格式,意思就是它可以被拿到任何Win32平台上执行。

2、Console程序设计例子

#include <afx.h>
#include <stdio.h>


int main()
{
int lo,hi;
CString str;
CStdioFile fFibo;


fFibo.Open(_T("FIBO.DAT"),CFile::modeWrite | CFile::modeCreate | CFile::typeText);
str.Format(_T("%s"),_T("Fibonacci sequencee, less than 100 :"));
printf("%s",(LPCTSTR)str);
fFibo.WriteString(str);

lo = hi =1;


str.Format(_T("%d\n"),lo);
printf("%s",(LPCTSTR)str);
fFibo.WriteString(str);

while(hi<100)
{
str.Format(_T("%d\n"),hi);
printf("%s",(LPCTSTR)str);
fFibo.WriteString(str);
hi = lo+hi;
lo = hi-lo;
}
fFibo.Close();
return 0;
}

这是一个简单的MFC Console程序,其中只用到了两个与UI无关的MFC类:CStdioFile和CString。

在MFC中,CFile用来处理正常的档案I/O操作。CStdioFile衍生自CFile,一个CStdioFile对象代表以C runtime函数fopen所开启的一个stream档案。Stream档案有缓冲区,可以以文字模式(默认状态)或二进制模式开启。

CString对象代表一个字符串,是一个完全独立的类。

你可能感兴趣的:(mfc,深入浅出MFC,Console程序)