当前位置:文档之家› windows应用程序和控制台应用程序的区别

windows应用程序和控制台应用程序的区别

windows应用程序和控制台应用程序的区别
windows应用程序和控制台应用程序的区别

windows 应用程序与控制台应用程序的区别

从表面上来看:控制台程序运行时是在DOS环境下,或者模拟dos环境运行的程序,运行时一般会启动一个提示符窗口。而应用程序是Windows环境下的窗口程序。运行时一般会启动一个窗口画面。(例外,病毒木马,就不显示窗口,这决定于是否创建了窗口,或者是否让窗口显示)

但是,实质上,windows应用程序和控制台应用程序的真正区别是,PE文件的结构不同,这点不需要我们去关心,编译器会根据你的选择去构建生成的exe文件的PE结构。

如何告之编译器你的选择?在编译器进行连接的时候,给它一个连接参数:

subsystem:windows或者subsystem:console来告诉它。对于大多数编程工具来说一般在“工程->设置->连接”这个表单里面就可以看到这个参数。

但是通常在我们要创建一个新的工程的时候,编译器会让我们事先选择好是创建windows应用程序还是创建控制台应用程序。这个参数的设置就不用我们操心了。

补充(你可以不看,有点复杂了):事实上,控制台程序依然还有区别,那就是,16位的可以在DOS操作系统环境中运行的DOS程序(也可以在window运行通常windows会模拟一个dos环境,这时你会程序窗口与平时的提示符窗口明显不一样),和32位通常只能在windows操作系统中运行的程序。通常32位控制台在DOS下运行,它的PE结构中会给予DOS 环境下运行的一个入口点(DOS文件头),这个入口点只有“一行”代码:"This program cannot be run in DOS mode"

而在32位系统下,操作系统将将查看PE文件头里面的subsystem字段来获得程序将以什么方式运行(windoes或者console)这个字段里面指示了子系统(CUI对应控制台,GUI对应普通程序,驱动程序等没有子系统)32位的控制台程序当然可以调用PAI函数,而16位的DOS程序则不可以调用API函数。

再补充关于编译器的一点内容:通常大学里面学习C,c++时,最常用的是VC6.0

TC++3.0 和TC2.0 VC6.0只能写32位程序。(也就是不能写Dos程序)

而TC++3.0 和TC2.0这两个编译器是16位的编译器,不能写窗口程序(因为调用不了API(之所以调用不了,固然是编译器的限制,但实质是编译器根本不去使用32位寄存器))

那么,如何才能写一个即可以在DOS运行,又可以在windows下运行的程序(还要带窗口)?那就是要修改exe的PE文件结构,使用人工方法粘贴代码。

Windows应用程序设计大纲

Windows应用程序设计 学时:总学时54;理论36;实验18 学分:3 适用对象:信息管理与信息系统、计算机科学与技术、软件工程专业 先修课程:《C++程序设计》 考核方式:本课程采用期末考核与平时成绩相结合的方式进行成绩评定,平时成绩占40%,期末考核成绩占60%。平时成绩包括作业、实验报告与上课表现,期末考核为闭卷笔试方式。 一、课程的性质与任务 《Windows应用程序设计》是为计算机科学与信息工程系各专业开设的一门专业基础课。该课程以面向对象程序开发理论为基础,具有较强的理论性、实践性和实用性。该课程的主要任务是讲授利用MFC进行Windows应用程序设计的基本原理和方法,并向学生灌输框架编程的核心思想,从而为今后开发实用性较强的软件系统打下坚实基础。 二、教学目的与基本要求 本课程的目的是使学生深刻理解框架编程的思想,学会MFC的常用类的用法,并能够开发出一般功能的Windows应用程序,进一步提高学生实际编程和用程序解决问题的能力。 教学中要求学生掌握Windows应用程序的基础概念、术语;理解Windows应用程序框架的封装原理;深刻理解VC提供的“文档/视图”结构框架;掌握MFC类库提供的常用类在窗口中绘制图形;熟练掌握鼠标、键盘消息处理的方法;熟练掌握资源的使用方法;掌握MFC的文件处理机制;熟练掌握对话框及控件的编程方法;了解应用程序中进程与线程的管理方法;学会用MFC设计数据库应用程序。 理论教学部分 理论课学时:36 使用教材及主要参考书: 1、使用教材: 任哲等编著,《MFC Windows应用程序设计》,清华大学出版社,2004年 2、主要参考书: 候俊杰,《深入浅出MFC》第二版,华中科技大学出版社,2001年 陈志泊等编著,《Visual C++ 6.0程序设计》,中国铁道出版社,2005年 一、学时分配 章节课程内容学时 1 Windows应用程序基础知识 2 2 Windows应用程序的类封装 2 3 MFC应用程序框架 2

Windows程序设计题

《Windows程序设计》模拟题 一.单项选择题 1. 在VC++中,项目文件的扩展名是(B)。 A)exe B)dsp C)dsw D)cpp 2. 在MFC中,利用ClassWizard不能(D)。 A)建立新类B)进行消息映射 C)增加类的成员变量D)插入资源 3. 当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,垂直滑动条发送(C)消息。 A)WM_CHAR B)WM_HSCROLL C)WM_VSCROLL D)WM_CHANGE 4. 更新菜单状态的消息是( C )。 A)WM_COMMAND B)UPDATE C)UPDATE_COMMAND_UI D)INVALIDATE 5. 对于消息队列描述正确的是( D ) A)在Windows中只有一个消息系统,即系统消息队列。消息队列是一个系统定义的数据结构,用于临时存储消息。 B)系统可从消息队列将信息直接发给窗口。另外,每个正在Windows下运行的应用程序都有自己的消息队列。 C)系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。 应用程序的消息对列中存储了程序的所有窗口的全部消息。 D)以上都正确 6. 在MFC中,所有的控件都是(B)类的派生类,都可以作为一个特殊的窗口来处理。 A)CView B)CWnd C)CWindow D)CDialog 7. 使用GetDC()获取的设备上下文在退出时,必须调用(A)释放设备上下文。 A)ReleaseDC() B)delete() C)DeleteDC() D)Detach() 8. 希望菜单无效,应该用CCmdUI类的(A)成员函数。 A)Enable B)SetRadio C)SetCheck D)SetText 9. 希望菜单前出现一个“√”,应该用CCmdUI类的(C)成员函数。 A)Enable B)SetRadio C)SetCheck D)SetText 10. 下面(A)不是MFC设备环境类CDC类的派生类。 A)GDI B)CPaintDC C)CClientDC D)CWindowDC 11. 在MFC中,所有的文档类都派生于(C),所有的视图类都派生于(A)。 A)CView B)CWindow C)CDocument D)CFormView 12. 采用C++进行绘图时,(B)用于指定图形的填充样式,(A)用于指定图形的边框样式。

MFC Windows应用程序设计复习题2

第9章MFC的文件处理机制 1) 文档负责将数据存储到磁盘中,存取过程称为(D) 。 A. 文件访问 B. 格式化 C. 文件读写 D. 串行化 2) 一个CArchive 类对象必须与一个( C ) 对象相关联。 A. CObject B. CFileDialog C. CFile类 D. CDocument 3) 不能将Newfile 文件的文件指针定位在文件头的方法是( B ) 。 A. Newfile.Open("MyFile.txt", CFile::modeCreate) B. NewFile::Seek( 0L, CFile::end) C. Newfile.SeekT oBegin() D. Newfile.Seek(0L, CFile::begin) 4)( A )函数用于获取指定文件的文件名。 A. GetFileName() B. GetStatus() C. GetFilePath() D. GetFileTitle() 5) 当应用程序读取或写入文件时,文档对象的( )函数被调用,并将( )对象作为参数传递。 6) ( CArchive )类是一个对象数组类,它可以存放任何从CObject 派生出的对象,还可以根据元素的数量动态地调整自己的大小。 7) 在Visual C++中,数据文件的操作通常按照( 打开) 、( 操作) 、( 关闭) 的步骤进行。 8) 写出以读写方式打开文件student.txt 的语句序列( File.Open(“student.txt”,CFile:modeReadWrite); ) 。 10)什么是序列化? 答:序列化是面向对象程序设计中应对象这种数据的存储和恢复的要求而产生的一种文件读写机制。 第11章对话框 1. 在对话框的编辑器中,最左边的按键的作用是(B )。 A. 激活对话框编辑功能 B. 测试对话框 C. 控件左对齐 D. 控件垂直居中

MFC Windows应用程序设计复习题

MFC Windows应用程序设计 【复习】 第1章Windows应用程序基础知识 1. Windows 程序设计是一种( C ) 的程序设计模式。 A:结构化B:面向对象C:事件驱动方式D:XP 2. 用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的( ) ,这些事件发生后的结果是向程序中的某些对象发出( ),然后这些对象调用相应的( C )来完成特定的操作。 A:消息,事件,程序B:消息,命令,消息处理函数 C:事件,消息,消息处理函数D:事件,消息,程序 3. 消息的组成(C) A:消息名称(UINT) B:消息名称(UINT)和参数(PARAM) C:消息名称(UINT)和两个参数(WPARAM,LPARAM) D:消息名称(UINT)和两个参数(HPARAM,LPARAM) 4. 程序在( B) 对消息进行分析 A:入口函数(WINMAIN)中 B:在窗口过程函数(WNDPROC)中 C:收到消息时 D:消息发生时 5. 一个消息( B ) A:可以不被窗口接受 B:必须由一个窗口接收 C:可以由一个或多个窗口接收 D:必须由多个窗口接收 6. 当没有为某消息编写消息处理时( C ) A:不进行处理 B:程序出错 C:默认的窗口过程进行处理 D:无法发出此消息 7. 应用程序接收到( A )消息时停止接收其他消息

A:WM_QUIT B:WM_DESTORY C:WM_PAINT D:WM_COMMAND 8. 下列Windows数据格式中,代表设备句柄的是(B)。 A. HWND B. HDC C. HINSTANCE D. HFONT 9. 典型的Windows窗口程序的流程为:(A) A. 注册窗口类->创建窗口->显示窗口->更新窗口->消息循环 B. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 C. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 D. 注册窗口类->创建窗口->更新窗口->显示窗口->消息循环 10. 在WinMain函数的原型中HINSTANCE hInstance 定义的是(A)HINSTANCE hPrevInstance定义的是(B)LPSTR lpCmdLine定义的是(C)int nCmdshow)定义的是(D) A:当前实例句柄B:先前实例句柄 C:指向命令行参数的指针D:窗口的显示状态 11. 以下哪个不是WinMain函数中完成的操作(D) A:注册窗口类B:创建应用程序主窗口 C:进入应用程序消息循环D:调用窗口过程函数 12. 下面说法错误的是(D) A:一个Windows程序可以包含多个窗口过程 B:一个窗口过程总是与调用RegisterClass注册的特定窗口类相关联 C:CreateWindow函数根据特定窗口类创建一个窗口,但基于一个窗口类,可以创建多个窗口 D:窗口过程必须由程序调用,而不是由Windows本身直接调用 13. Windows应用程序中使用了各种Windows API函数声明,宏定义,数据类型定义,(D)是主要的包含文件。 A STDIO.H B WINDEF.H C WINUSER.H D WINDOWS.H 14. 注册窗口类型时,窗口风格各个选项可以用(B)运算符联合表示。 A AND(&) B OR(|) C 逻辑与(&&) D 逻辑或(||) 15. 在函数CreateWindow()调用返回之后,Window内部(B) A:已经创建了这个窗口,但还未分配内存 B:已经创建并分配了内存 C:还未真正创建窗口,等待分配内存 D:还未真正创建窗口,但已经分配内存

实验五Windows应用程序设计

大理学院课程教案 (实验教学) 课程名称: C#面向对象程序设计 课程类型:( 1 )1、必修;2、选修;3、其它 授课对象:计算机科学与技术专业(本、专科) 2013 级1、2班 授课时间: 2014 至 2015 学年第 3 学期 计划学时: 36 学时(其中:理论 36 ,实验: 36 ) 任课教师:杜英国 所属学院:数学与计算机学院 课程管理部门(教研室):软件教研室 大理学院教务处制

课程名称:C#面向对象程序设计 教材:C#程序设计实用教程黄兴荣李昌领李继良编著清华大学出版社 授课人1:杜英国专业技术职务:讲师 学历:研究生学位:硕士 授课人2:专业技术职务: 学历:学位: 实验题目:Windows应用程序设计计划学时:3 实验类型:(4 )1、演示性2、验证性3、综合性4、设计性每组实验的学生人数:1 人 教学目的和要求: 熟悉C#集成开发环境;了解各功能的菜单命令;显示所有的可见窗口和所有工具栏(箱),随后再将上述的窗口和工具栏(箱)进行隐藏;了解工具栏(箱)中有哪些主要控件;了解控件的属性及事件;掌握控制台应用程序的输入输出方法的使用。 实验方法(包括实验中需要注意的问题等): 1.在VS下,创建一个窗体应用程序。 2.在解决方案资源管理其中创建子窗体。 3.在窗体上搭建相关控件。 4.编写代码。 5.注意个窗体之间的数据回传。 实验重点(主要解决的问题和达到的目的):

1.窗体、控件的使用。 2.理解窗体间数据回传。 3.掌握分级信息的处理。 实验难点(预计实验过程中会遇到的问题和解决方案): 1.窗体间数据回传。 2.分级信息的处理。 教学方法(实验前的教学和实验过程中的指导方法): 实验前教师先讲解完9章内容,学生认真复习9章内容;在实验过程中结合实验环境教师可先提示性讲解实验内容,再由学生自己完成实验。如果实验完成情况较差,教师统一辅导。 实验仪器和材料: 计算机,Windows XP, VS2008 实验报告要求和思考题: 教师现场检查评价本次实验。 参考资料: 《C#程序设计项目教程—实验指导与课程设计》黄兴荣编著清华大学出版社

实验一 Windows应用程序设计(实验讲义)

实验一Windows简单程序设计 1、[实验目的] 了解在VC中Windows SDK应用程序的开发,熟悉Win32 Application和Win32 Console Application的程序结构 2、[实验内容] ①编写程序,要求程序能实现对字符串的处理; ②编写一个Win32 Application类型的Windows窗口程序。 3、[实验仪器设备] 操作系统:Windows2000/XP 编程软件:VC++ 4、实验步骤 (1)Win32 Console程序开发 ①运行Microsoft Visual C++ ②创建工程: 选择菜单“File”->“New”,在打开的对话框中,切换到“Projects”标签下,并选择“Win32 Console Application”作为工程类型,分别在Project name和Location文本框中输入工程的名字和位置(可自行定义),单击“OK”完成工程的创建。 ③编写代码实现:输入一串,比较字符串是否为“exit”,是则退出程序,否则输出串长度。循环输入第二个串,重复上述处理。(请给出程序代码) ④形成目标程序 单击菜单栏的“组建(B)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 ⑤运行程序 单击菜单栏的“组建(B)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。 (2)Win32 Application窗口应用程序开发 ①程序结构: ●注册窗口类 ●创建窗口 ●显示和更新窗口

●创建消息循环 ●处理消息 ②创建工程: 同上,注意这里要选择“Win32 Application”作为工程类型 ③编写源程序: 程序可参考书上P9~P11,书上源程序存在部分错误,修正如下: ●添加两个头文件: #include #include ●在WinMain函数的实现程序前添加一段代码用于声明过程函数: long FAR PASCAL MainWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); ● ●在WinMain函数的实现程序中的变量定义部分增加一个变量申明: HWND ghWndMain; ● ●书上第14行wc.hbrBackground=GetStockObject(WHITE_BRUSH)修改为 wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH) ●在注释“显示窗口”下面增加一行,添加一句更新窗口的代码: UpdateWindow(ghWndMain); ●在MainWndProc函数的实现程序中将窗口显示消息处理部分的代码(这 部分有3行代码)修改如下: case WM_PAINT: //窗口显示消息处理 HDC hDC; PAINTSTRUCT ps; hDC=BeginPaint(hWnd,&ps); TextOut(hDC,0,0,"这是我的第一个windows程序",strlen("这是我的第一个windows程序")); EndPaint(hWnd,&ps); break; ④形成目标程序

基于C++的简单Windows画图程序设计

学校代码 10126 学号 00861003 本科学年论文 题目基于C++的简单Windows画图程序设计 院系内蒙古大学鄂尔多斯学院 专业名称自动化 年级 2008 级 学生姓名宋杰 指导教师金涛 2011年06月20日

学年论文指导教师评阅意见 2

内蒙古大学鄂尔多斯学院2008级自动化专业学年论文 基于C++的简单Windows画图程序设计 摘要 本文简要介绍了基于C++的简单画图程序的实验设计过程。该设计以C++这一高级语言为基础,依托VC++开发环境中的MFC类设计而成,可实现最基本的绘图以及图形的保存与修改等功能。程序开发过程中采用了面向对象技术,易于扩充和维护。通过本次设计对面向对象技术及MFC有更深刻的了解,为今后图形系统的开发及可视化程序的设计提供了一个良好的实践基础。 关键词:VC++,MFC,对象,画图 I

基于C++的简单Windows画图程序设计 00861003 Simple Windows Drawing Program Based On C++ ABSTRACT This article briefly describes the design process for a simple drawing program based on C++.The design based on the C++ language, a high-level language, relying on MFC classes in the VC++ development environment designed, can provide the most basic features such as saving and modifying of the drawing, and graphics.The program using object-oriented technology in the development process, is easy to expand and maintain. Through this design to a more profound understanding of object-oriented technology and MFC for future development and Visual program design of graphic system provides a good basis for practice. KEYWORDS: VC++, MFC, object, drawing II

相关主题
相关文档 最新文档