Windows应用程序封装C#
- 格式:doc
- 大小:20.50 KB
- 文档页数:1
mfc面试题MFC(Microsoft Foundation Classes)是微软公司开发的一套C++类库,用于进行Windows应用程序的开发。
MFC面试题主要涉及MFC框架的基本概念、使用方法和相关编程技巧。
以下将以问题和答案的形式介绍几个常见的MFC面试题。
问题1:MFC是什么?它的作用是什么?答:MFC全称为Microsoft Foundation Classes,是微软在VisualC++中提供的一组类库。
它的作用是封装了Windows操作系统的API,简化了Windows应用程序的开发过程。
通过使用MFC,开发人员可以更加方便地创建图形界面、响应用户操作和调用系统功能。
问题2:MFC的架构是怎样的?答:MFC的架构可以分为三层:应用程序层、框架层和操作系统层。
应用程序层是开发人员编写的具体应用程序代码,包括窗口类、对话框类、消息处理函数等。
框架层是MFC提供的类库,包括CWinApp、CFrameWnd、CView等类,用于管理应用程序的生命周期、创建主窗口、处理消息等。
操作系统层是Windows操作系统提供的API,MFC通过封装这些API,以提供更高层次的抽象和易用性。
问题3:如何创建一个MFC应用程序?答:创建MFC应用程序的步骤如下:1. 打开Visual Studio,选择创建新项目。
2. 选择Visual C++ -> MFC -> MFC应用程序。
3. 输入项目名称,选择保存位置,点击确定。
4. 在向导中选择应用程序类型(单文档、多文档、对话框等)、界面风格和其他选项。
5. 点击完成,Visual Studio将自动生成一个基本的MFC应用程序框架。
问题4:如何处理MFC中的消息?答:MFC中的消息处理通过消息映射表和消息处理函数完成。
首先,需要在类声明中使用`DECLARE_MESSAGE_MAP()`宏来声明消息映射表。
然后,在类实现中使用`BEGIN_MESSAGE_MAP`和`END_MESSAGE_MAP`宏来定义消息映射表的起止位置。
1、W indows操作系统的主要功能是_B_____。
A.实现软、硬件转换B.管理系统所有的软、硬件C.把源程序转换为目标程序D.进行数据处理[解析]操作系统属于系统软件,它的主要功能是:管理系统所有的软件和硬件资源。
2、W indows XP 系统是___C___。
(请看解析)A.单用户单任务系统B.单用户多任务系统C.多用户多任务系统D.多用户单任务系统[解析]Windows操作系统的服务器版支持多用户,而且Windows操作系统是一个多任务系统,“多任务”可理解为在Windows下同时运行多个应用程序。
3、W indows提供的用户界面是_D_____。
A.交互式的问答界面B.显示器界面C.交互式的字符界面D.交互式的图形界面[解析]DOS操作系统是一个交互式的字符界面。
4、W indows操作系统的特点不包括__D____。
A.图形界面B.多任务C.即插即用D.卫星通信5、在Windows的支持下,用户__D____。
A.最多只能打开一个应用程序窗口B.最多只能打开一个应用程序窗口和一个文档窗口C.最多只能打开一个应用程序窗口,而文档窗口可以打开多个D.可以打开多个应用程序窗口和多个文档窗口6、关于Windows运行环境说法正确的是__C____。
(请看解析)A.对内存容量没有要求B.对处理器配置没有要求C.对硬件配置有一定要求D.对硬盘配置没有要求[解析]参考p.34。
对硬件配置有一定要求,例如内存容量不能低于128MB。
但我们现在的电脑一般均能满足Windows运行的条件。
7、在Windows 中,排列桌面项目图标的第一步操作是__B___。
(请看解析)A.按鼠标右键单击任务栏空白区B.按鼠标右键单击桌面空白区---按鼠标右键可弹出快捷菜单(如下图所示)C.按鼠标左键单击桌面空白区D.按鼠标左键单击任务栏空白区[解析] 按鼠标右键单击桌面空白区,将弹出如图所示的菜单,然后选择“排列图标”选项…。
mfc 知识点总结MFC库的基本组成包括以下几个部分:1. CObject类:是所有MFC类的基类,提供了对象的基本功能,包括内存管理、类型信息、对象的打印和序列化等。
2. CWnd类:是窗口类的基类,封装了Windows窗口的创建、显示、消息处理等功能。
3. CFrameWnd类:是框架窗口类,派生自CWnd类,封装了应用程序的主窗口,提供了菜单、工具栏、状态栏等UI组件。
4. CDocument类和CView类:分别是文档类和视图类,用于管理应用程序中的文档和视图。
文档类负责文档的打开、保存、关闭等操作,视图类负责文档内容的显示和交互。
5. CWinApp类:是应用程序类的基类,封装了应用程序的初始化、消息循环、资源管理等功能。
MFC库提供了丰富的类和函数,用于处理Windows应用程序的各个方面,下面将对MFC的一些重要知识点进行总结。
1. 消息处理在MFC应用程序中,窗口的消息处理是至关重要的。
MFC提供了消息映射机制来进行消息处理。
通过DECLARE_MESSAGE_MAP宏和BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 宏,在类中声明消息处理函数并将消息与处理函数进行映射。
例如:```cpp// 声明消息处理函数afx_msg void OnMouseMove(UINT nFlags, CPoint point);// 映射消息到处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)ON_WM_MOUSEMOVE()END_MESSAGE_MAP()```2. 对话框对话框是Windows应用程序中常用的界面元素,用于与用户进行交互。
MFC提供了CDialog类和CDialogEx类来封装对话框。
开发者可以使用资源编辑器创建对话框模板,然后通过类向导生成对话框类。
对话框类中可以处理控件的事件,并通过DoModal函数或Create函数来显示对话框。
MFC类库是一个层次结构,主要有CObject类、应用程序类、可视对象类、绘图和打印类、通用类、数据库类、Internet和网络类、OLE类。
(1)CObject类CObject类是MFC的抽象基类,MFC中的大多数类是从CObject类派生出来的。
它是MFC 中多数类和用户自定义的根类,该类为程序员提供了希望融入所编写程序的许多公共操作,包括对象的建立和删除、串行化支持、对象诊断输出、运行时信息以及集合类的兼容等。
CObject类的声明在Afx.h中。
(2)应用程序结构类该类主要用于构造框架应用程序的结构,提供了多数应用程序公用的功能.编写程序的任务是填充框架,添加应用程序专有的功能。
1.应用程序和线程支持类CWinThread类是所有线程的基类,窗口应用程序类CWinApp类就是从该类中派生来的。
每个应用程序有且只有一个应用程序对象,在运行程序中该对象和其他对象相互协调,该对象从CWinApp中派生出来。
该类封装了初始化、运行、终止应用程序的代码。
2.命令相关类CCmdTarget类是CObject的子类,它是MFC所有具有消息映射属性的基类。
消息映射规定了当一对象接收到消息命令时,应调用哪个函数对该消息进行处理。
程序员很少需要从CCmdTarget类中直接派生出新类,往往都是从它的子类中派生出新类。
如窗口类(CWnd)、应用程序类(CWinApp)、文档模板类(CDocTemplate)、视类(CView)及框架窗口类(CFrameWnd)等。
3.文档类文档对象由文档对象模板创建,用于管理应用程序的数据。
视图对象表示一个窗口的客户区,用于显示文档数据并允许读者与之交互。
有关文档/视结构的类如下:①CDocTemplate类:文档模板的基类。
文档模板用于协调文档、视图和框架窗口的创建。
②CSingleDocTemplate类:单文档界面(SDI)的文档模板。
③CMultiDocTemplate类:多文档界面(MDI)的文档模板。
系统封装,说简单就是把系统制作成镜像的方法刻录到光盘,用在系统安装上面.系统封装,不同于系统的正常安装。
最本质的区别在于系统封装是将一个完整的系统以拷贝的形式打包,然后用粘贴的形式安装在另外一个系统盘上,而正常安装则是通过Setup程序进行安装。
举一个不太贴切的例子,你要铺草坪,你可以在那片土地上撒草籽等待草的长成,也可以直接购买草皮。
而这层草皮就相当于系统封装。
使用系统封装可以把系统安装的时间缩短NN 倍,封装安装方法安装系统只需要5-10分钟!而比正常安装大大节约了时间。
目录一、前期基础工作二、系统DIY三、系统减肥(可选)四、更改系统硬件驱动(关键)五、整理磁盘碎片(推荐)六、系统封装(推荐)七、制作Ghost系统镜像文件八、制作启动光盘============================================================万能Ghost系统封装教程(完整)目录一、前期基础工作二、系统DIY三、系统减肥(可选)四、更改系统硬件驱动(关键)五、整理磁盘碎片(推荐)六、系统封装(推荐)七、制作Ghost系统镜像文件八、制作启动光盘九、附录一、前期基础工作1、准备封装所需工具软件*虚拟机VMware vmware+5.5.3+中英双语精简版*Windows2K/XP/2003系统安装光盘(推荐使用免激活的版本)*DEPLOY.CAB(在系统安装光盘:\SUPPORT\TOOLS目录下提取)*YLMF 系统DIY Y1.6(系统信息修改工具)*Drivers.exe(系统补充驱动程序包)*Drvtool.exe(驱动程序选择工具)*Convert.exe(系统盘转换为NTFS格式工具,可以从YLMF的Ghost系统中提取)*DllCacheManager_V2.0(DLL文件备份恢复工具)*Font_Fix_1.0.exe(字体文件夹减肥程序)*CorePatch.exe(酷睿双核CPU补丁)*cfgtool.exe(深度系统设置工具)*UXTheme Multi-Patcher (Neowin Edition) 4.0.exe(主题破解程序)*Ghost_v8.3(v8.0以上版本才能够支持NTFS分区)2、需要替换的系统资源*桌面背景壁纸(C:\WINDOWS\Web\Wallpaper)800*600以上*安装时的背景图片(C:\WINDOWS\system32)800*600/1024*768*OEM图片(C:\WINDOWS\system32)169*60*用户头像(C:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures)48*48*系统主题资源包(根据自己的喜好下载)3、封装所需应用软件WinRAR_3.50简体中文版(压缩文件)ACDSee10_Crack(图像查看、处理工具)FoxitReader(PDF阅读器)暴风影音3完美版(媒体播放工具)一键Ghost 11.0硬盘版(系统备份、还原工具)Office2003(Word、Excle、Powerpoint办公软件,建议使用精简版)QQ拼音输入法极点五笔输入法注:根据需要还可以准备Internet Explorer 7.0、Windows Media Player 11.0、系统补丁集4、安装操作系统正常安装操作系统并打好系统安全补丁(一定要安装到C盘,不能安装到其他分区,除非你是整个硬盘Ghost),升级IE6到IE7、MP9到MP11。
MFC使用教程第一部分:MFC简介Visual C++ 不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的C++ 来开发出专业级的Windows 应用程序。
为了能充分利用这些特性,你必须理解C++ 程序设计语言。
掌握了C++,你就必须掌握Microsoft 基本类库(MFC) 的层次结构。
该层次结构包容了Windows API 中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows 应用程序。
这种层次结构适用于所有版本的Windows 并彼此兼容。
你用MFC 所建立的代码是完全可移植的。
简单介绍MFC的基本概念和术语以及事件驱动程序设计方法。
输入、编译和运行一个简单的MFC程序。
第二部分中将详细解释这些代码。
第三部分讨论了MFC控件和如何定制它们。
什么是MFC?如果你要建立一个Windows 应用程序,应该如何下手?好的开端是从设计用户界面开始。
首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。
Windows 用户界面有一些标准的控件,如按钮、菜单、滚动条和列表等,这对那些Windows 用户已经是很熟悉了。
要记住的是,作为程序员必须选择一组控件并决定如何把它们安排到屏幕上。
传统上,你需要在纸上做一下用户界面的草图,直到对各元素感到满意为止。
这对于一些比较小的项目,以及一些大项目的早期原型阶段是可以的。
下一步,是要实现代码。
为任何Windows 平台建立应用程序时,程序员都有两种选择:C 或C++。
使用C,程序员是在Windows 应用程序界面( API ) 的水平上编写代码。
该界面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。
对于Windows NT, API 被称为"Win32 API",以区别于其用于Windows 3.1的16位API, Microsoft 也提供了C++ 库,它位于任何Windows API 之上,能够使程序员的工作更容易。
1 引言C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft).NET公共语言运行环境中内置的核心程序设计语言,它集c/c++语言的强大功能,Java语言面向对象的体征以及Visual Basic语言的易用性为一体,为在.NET环境下的计算机应用提供了功能强大,全新,易用的程序设计工具,使用c#语言可以开发在.NET Framework上运行的多种应用程序,包括:控制台应用程序,Windows窗体应用程序,Web应用程序以及Web服务等。
2 C#语言简介C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。
并定于在微软职业开发者论坛(PDC)上登台亮相。
C#是微软公司研究员Anders Hejlsberg的最新成果。
C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。
但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。
C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。
它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。
C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
C#是面向对象的编程语言。
它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
C#使得C++程序员可以高效的开发程序,且因可调用由C/C++ 编写的本机原生函数,而绝不损失C/C++原有的强大的功能。
请问MFC中的DC、CDC、HDC、句柄、设备上下文究竟是什么意思?希望能解答详细一点点谢谢了楼主你没有了解MFC的运行机制就去看他写他所以你先要了解他的机制已经各个CPP .H都是什么下面我就给你说下在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API 你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库然后你来调用只不过这个类不是你写的MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石。
1>封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库。
这些类封装WIN32应用程序编程接口,OLE(Object Link Embed 对象链接嵌入)特性,ODBC和DAO数据访问的功能。
2>继承特性:MFC抽象出了众多类的共同特性,并设计出一些基类作为实现其他类的基础,这些类中最重要的类是CObject类和CCmdTarget类,程序员可以从适当的MFC类中派生出自己的类,实现特定的功能达到编程的目的。
3>虚拟和消息映射:MFC是以C++为基础,当然支持虚函数,但作为一个编程框架必须要解决的是效率问题:如果MFC仅仅通过虚函数来支持动态约束必然会产生大量的虚函数表这样编程框架过于臃肿而且消耗更多的内存。
但是MFC 建立了消息映射机制这样降低了内存的使用却大大提高了效率消息映射是一个将消息和成员函数相互关联的表,当应用程序的框架窗口接收到一个消息时,MFC将搜索该窗口的消息映射,如果存在一个处理消息的处理程序,那么就调用该处理程序.它通过宏来实现消息到成员函数的映射,而且这些函数不必是虚拟的成员函数,这样不需要为消息映射函数生成一个很大的虚拟函数表(V表),节省内存。
使用C进行Windows桌面应用程序开发Windows桌面应用程序是指能够在Windows操作系统上运行的软件应用程序,通常具有图形用户界面(GUI)且能够提供丰富的功能和交互性。
开发Windows桌面应用程序可以使用多种编程语言,其中C语言是一种常用且强大的选择。
本文将介绍使用C语言进行Windows桌面应用程序开发的基本步骤和相关注意事项。
一、Windows桌面应用程序开发环境的准备在进行Windows桌面应用程序开发之前,首先需要搭建相应的开发环境。
以下是搭建C语言开发环境的基本步骤:1. 安装C编译器:C语言是一种编译型语言,因此需要安装相应的C编译器。
常用的C编译器有GCC和Visual Studio等。
GCC是一款开源的免费编译器,而Visual Studio是微软官方提供的一套集成开发环境(IDE),其中包含了C编译器。
2. 配置开发环境:根据选择的C编译器进行相应的环境配置。
对于GCC,可以通过在命令行中输入gcc命令来进行编译和链接操作。
对于Visual Studio,可以在IDE中创建一个新的C项目,并在项目设置中进行相关配置。
二、Windows桌面应用程序的开发流程在搭建好开发环境后,可以开始进行Windows桌面应用程序的开发。
下面是一个基本的开发流程:1. 确定应用程序需求:在开始开发之前,首先需要明确应用程序的需求和功能。
考虑应用程序的用途、目标用户以及所需的功能和界面设计,有助于后续的开发工作。
2. 编写代码:使用C语言编写应用程序的功能代码。
在编写代码时,可以利用C语言的丰富库函数来实现各种功能,比如文件操作、网络通信、图形界面等。
同时,还可以使用相关的开发工具和框架来简化开发过程。
3. 进行编译和调试:使用C编译器对代码进行编译,并进行调试。
编译过程会将源代码转换为可执行文件,检查并修复代码中的错误和问题。
调试过程是为了定位并解决代码中的BUG(程序错误),可以通过逐步执行、设置断点和查看变量值等方式进行。
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。
为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。
本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。
最后,你可以用所学知识编写自己的Windows 服务。
当初我写第一个NT 服务时,我到MSDN 上找例子。
在那里我找到了一篇Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个C++ 例子。
虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。
我想理解通过什么框架,调用什么函数,以及何时调用,但C++ 在这方面没有让我轻松多少。
面向对象的方法固然方便,但由于用类对底层Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。
这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。
在你对服务程序有了充分透彻的理解之后,用C++ 编写才能游刃有余。
当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用C 所写的例子就非常容易解释NT 服务之所以然。
服务是一个运行在后台并实现勿需用户交互的任务的控制台程序。
Windows NT/2000/XP 操作系统提供为服务程序提供专门的支持。
人们可以用服务控制面板来配置安装好的服务程序,也就是Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入services.msc /s——译者注)。
可以将服务配置成操作系统启动时自动启动,这样你就不必每次再重启系统后还要手动启动服务。
本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文件的服务。
然后指导你完成生成,安装和实现服务的整个过程。
第一步:主函数和全局定义首先,包含所需的头文件。
编译之后就会在Bin文件夹的Debug(如果选择Debug编译)或Release(如果选择Release 编译)生成一个Exe程序和若干相关的Dll文件。
直接把他们拷贝到安装有对应版本的.net framework的目的机器上直接执行exe即可。
如果做安装包的话,以下是做法:
1 新建安装部署项目
打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定。
2 安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成。
3 开始制作
安装向导完成后即可进入项目文件夹:
双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。
然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。
这样安装程序安装完成后会在"开始->所有程序"和"桌面"上生成程序的快捷方式。
也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。
然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:\Program Files\你的用户名\安装解决方案名称";
然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备",在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。
选上以后,在生成的安装文件包中包含.NetFramework组件。
好了,这样就完成99%了,然后点击"生成->生成解决方案"即可。