VC中的Win32应用程序和MFC程序有什么分别那个功能强现在都用那个

VC中的Win32应用程序和MFC程序有什么分别那个功能强现在都用那个,第1张

WIN32 是Windows的一个子系统,也是最重要的一个。(还有POSIX子系统和OS/2子系统)Win32子系统为应用程序提供了使用系统资源的接口Win32 API,WIN32 API是Windows用户态下应用程序编程的基础。因此所有在WIN32API基础上的应用程序都是Win32应用程序。

MFC ,Microsoft Foundation Classes微软基础类库。这个类库不光封装了大多数的GUI系统对象和数据结构,还为开发者提供了开发框架,使原本复杂繁琐的Windows开发(尤其使界面开发)变得非常简单。

MFC是对API的封装,因此它能实现的功能只是API的子集。对于追求系统底层相关而且效率高的程序而言,MFC不够灵活而且开销也大。但对于图形界面开发,如果没有MFC而使用API的话那么开发简直是对人的折磨。

MFC很好用,但终归也是API的东西。懂了系统原理和接口,MFC也就全明白了。

按工作经验来算,我应该叫你一声大哥了,毕竟小弟只是刚工作一年多点,关于大哥提出的那10个问题,小弟有些意见不知道对大哥是否有帮助,如果大哥觉得小弟资质尚浅,那可就对不住大哥浪费时间来看小弟的回答了。。。。

1:大哥的开发经验在这个领域能发挥多少?这个主要就看大哥以后会从事哪个更具体的方向了。说白了,嵌入式就2个大的方向--底层驱动/上层应用软件开发。如果大哥以后会涉及到底层驱动开发,那么之前的那4年C++开发经验在这基本上就没有多大用处了。如果大哥会一直做上层软件开发,那根据具体不同平台,之前的经验会对大哥有不同影响。比如现在大哥是做基于单片机的设计,那么能用到的只是之前4年得一些程序设计思想、思路,而其余一些具体实现大哥都还得去学习。然而要是大哥将来做的是基于大型 *** 作系统的平台,如arm/linux,那么之前的经验对大哥来说,会有很大的帮助。

2:设计理念这东西,恕小弟才疏学浅。在此只能说说一个嵌入式设备产品出来后需要满足的一些基本要素:

一、稳定性强:包括硬件稳定性和软件稳定性,这里硬件方面不需要大哥关注,那么主要的就是软件上了。那么大哥在软件设计时需要注意的重点就是,要保证产品不会因自己的程序导致硬件上的错误。

二、实时性:大哥现在用的是单片机,单片机的事件触发都是以中断形式产生的并且单片机不支持多任务,那么在此,大哥设计之前,须知道这产品主要的功能模块是什么,次要功能是啥,从而将这些功能模块所涉及到的中断设置为相应优先级。举个例子,大哥这次做的电力产品是用来进行电表数据抄收的中间产品,那么其最少就包括2个功能--对电表的数据抄收/将抄收到的数据发送给上位机,如果在抄收电表的同时,接收到上位机命令,需要返回数据给上位机,大哥就得考虑孰轻孰重,谁先执行,谁该等待。

三、可拓展性:现在的硬件发展越来越来,大哥想要自己的嵌入式产品具备较强的生命力,那么就必须跟得上脚步,使得自己的产品无论是硬件上,还是软件上都有较强的扩展性。如此,在程序设计方面,大哥第三问所说的模块化以及面向对象理念也就是必然的了(当然,这里的必然是以产品的复杂度为前提的,如果是一些小的东西也没必要搞这么复杂)。

4:芯片之间的通信。这是必须有的,特别是做基于单片机得开发,这些东西都需要大哥去寻找对应芯片的开发资料,了解其 *** 作时序,对芯片进行相应的读写 *** 作。

5:有,但大哥现在涉及到的单片机没有。如果以后大哥接触到基于带 *** 作系统的平台,那么可以根据具体的 *** 作系统,实现多任务、进程通信等类似WIN32的程序设计,不同之处基本上只是接口函数以及实现方式的差异罢了。

6:做嵌入式,了解所在的行业知识是必要的,不过也只需要了解和你产品相关部分的东西罢了,因为这可能对产品软件设计上有很大影响。举个例子,还是电力方面。假设这次大哥所作的监控产品是用于读取电表上的计量数据(电流、电压、有功、无功等等),而电力规约上的数据项成百上千(具体没数过,反正就是挺多),那么大哥最少要知道,哪些数据项是电业局比较关心的,哪些数据项是不那么重要要的,哪些数据项是所读取电表拥有的,哪些是被读取电表没有的,这样,在程序设计时,根据不同情况,筛选合适的数据,既减少读表数据的时间,又减轻代码量,不挺好么。

7:关于开发环境,这个小弟不能提供有用建议了。。。因为基于单片机 ,我用的还是keil。。

要是大哥有好的,方便也推荐下。。

8:大哥做了这么多年开发,想必了解团队的重要性吧,先融入你的团队,之后项目上的任何问题,都将是你团队共同的问题。莫非大哥是一个人在战斗?

9:我想大哥应该没机会接触到这个DOS时代的开发技术了,毕竟大哥以后可能是往软件架构上走,不会做底层开发,不会涉及到汇编,用C就足够了。

10:电路不需要精通,但最少要看的懂,比如知道芯片是通过哪几个管脚和某个外设相连,这样在写代码时才知道通过给哪几个管脚赋值,能够 *** 作某个外设。当然,如果是做基于 *** 作系统系统的纯软件设计,那么这些也都不需要懂了,只要知道接口函数就OK了,不过这样,做嵌入式和做WIN32就没啥区别了,那也就失去乐趣了。

好了,小弟能说的就这么多了,该睡了,明天还工作。。。希望对大哥能有所帮助,如果大哥看了觉得没啥益处,那么小弟抱歉,浪费大哥时间浏览这回答了。。

最后想说句,小弟是做电力数据采集产品方面的,不知道大哥做的电力产品具体是哪一块,有时间交流交流。

OpenGL在windows上就是垃圾,,别人一般用DX,,,,

但是在linux android上却好用,,这时一般依附于QT,,,java组件开发。

Win32 console application一般是用glut开发,,初学者最好用这个,,

如果你因要用win32 windows sdk,请参考nehe教材。。。

最后,,,因为Gl在Windows上需要一个设备上下文,这个上下文一般是依赖于窗口的,,,所以他必须和窗口打交道,,glut帮你把这步节省了,,他帮你初始化窗体,然后给你一些简单的回调函数

一、游戏开发制作的概念

1、游戏开发是一个过程,为了激发玩家玩游戏热情,通过遵循设计制作规则,来设计人物、场景等游戏要素。

2、主要流程包括原画创作、建模、材质、灯光及渲染、骨骼设定、动画、特效等部分。涉及范畴包括:游戏规则及玩法、视觉艺术、编程、产品化、声效、编剧、游戏角色、道具、场景、界面等等元素。

3、游戏程序开发归根到底就是软件工程,是游戏制造环节中不行短少的重要部分。游戏程序开发是技术含量最高的,游戏程序员的薪资也相对其他职业高许多,目前游戏职业中游戏程度人才的缺口非常大,供不应求。

二、游戏开发需要具备的知识

1、游戏本质分析,游戏产业概论、游戏开发流程及职业划分、玩家需求分析、构思创意及文档编写要求、游戏故事设计、游戏元素、规则、任务、系统、关卡设计、游戏平衡设定、界面与 *** 作功能。

2、透视基础、构图基础、结构素描、明暗素描、艺用人体解剖基础、人物速写、Adobe软件应用、造型基础、游戏美术风格技法、色彩基础、游戏色彩练习、肖像绘制、质感表现。

3、3DMAX软件基础、游戏材质基础、游戏道具制作、作品渲染。

三、游戏场景制作技巧、场景材质制作、卡通角色制作、写实角色制作、怪物制作。简单分类的话就是:

1、扎实的算法知识。主要有:树或图的搜索算法、A算法、碰撞检测算法、BSP树、人工智能。

2、相关图形处理知识。比如:DirectX编程、OpenGL编程、图形学的相关知识(三维图形的形体、纹理、贴图、照明,还有三维对象的消隐算法比如油画算法,Z缓存)和动画处理知识。如果想深入还要学会几种三维引擎比如OGRE。

3、扎实的程序语言功底,主要代表为VC、DELPHI和JAVA。其中VC使用最广,现在比较大的游戏也由此开发;DELPHI功能也很强,很多网游:比如网金、传奇都用到了DELPHI;JAVA用于开发手机游戏。

补充:

一、游戏开发需要学哪些

1、基础公共课:游戏概述Photoshop平面软件及像素美术3dsmax软件基础及效果图制作游戏程序设计基础及游戏制作原理游戏策划、制作、测试及运营实践游戏行业规划及职业素质。

2、专业技能课:手机2D游戏开发2D游戏开发技术实战C语言及算法基础WIN32程序开发及MFC基础2D游戏开发实践行业规划及职业素质。2D网络游戏开发主要学习内容有网络游戏程序设计、网络游戏算法设计、2D网络游戏平台设计以及商业实战项目训练,包含C、数据结构、算法基础、WindowsAPI使用、MFC原理及其应用、2D图形渲染技术、界面设计与应用。

3、游戏程序方向:Direct3D程序开发基础3D游戏开发技术实战游戏引擎的修改与使用网络通讯、数据库及游戏服务器、行业规划及职业素质、游戏综合项目实战训练、基地顶岗项目实训。

二、游戏开发常用软件

1、3dsMAX:大多数游戏开发公司美工使用,效率较高,可以独立制作游戏中所有美术相关资源。

2、Delphi:直接编译生成可执行代码,编译速度快。由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。

3、Photoshop:PHOTOSHOP是一个很好的图像编辑软件,PHOTOSHOP的应用领域很广泛,在图像、图形、文字、视频、出版各方面都有涉及。

4、MAYA:跟3dsMAX差不多的软件,因个人喜好而定,MAYA在制作动作的方面较MAX稍差,不过在很多方面这两款软件都是可以兼容的。

5、其他:在个人计算机上,可以用目前流性的软件开发工具,比如:C,C,VC,Delphi,CBuilder等。由于Windows *** 作系统的普及和其强大的多媒体功能,越来越多的游戏支持Windows *** 作系统。

因此不会对一些基础的知识作过多的讲解。如果大家有需要,我在就某些细节作进一步的解释。编写Windows下面的GUI程序,比较有影响力的就是MS的Visual Studio系列和Borland的BCB系列。BCB需要在程序发布的时候,多带一些borland提供的库,比较的麻烦。所以我很少用。如果用VS系列来编写GUI程序,主要有两个方式,第一就是用微软提供的MFC来作,第二就是用纯的Win32 SDK来编写GUI程序。众所周知的原因,MFC对Win32 SDK的包装比较的失败,不如BCB那样的流畅,有时候你很难在程序中发挥自己的思路,因此,我一般就是用纯的Win32 SDK来编写GUI程序,而不用晦涩的MFC,因为用MFC,你不仅仅要知道Win32 SDK,还需要查询MFC的一些技巧,实在得不偿失。用Win32 SDK编写GUI的难处在于,有时候你需要为了一个简单的事情而查询很多的资料与SDK文档。但是你得到的却是对Windows系统的透彻理解和程序运行的高效,轻量化。因为用Win32 SDK需要的库都是内含在每一个Windows系统中的。理论上来说,只要是Windows系统,你的程序就可以正确无误的运行。下面就我最近编写Windows GUI程序的碰到的一些问题一一说明。首先,看一下程序的最终运行效果图(我的编译器是VC6): 1 用VC6的Win32程序搭好框架之后,就添加自己的模式对话框,碰到的第一个问题就是如何设置Radio控件(有的中文书翻译为 单选按钮)的初始状态和查询最终的结果。经过一番努力查询Win32 SDK之后,标准答案如下:设置Radio的初始状态:BOOL CheckDlgButton(HWNDhDlg,int nlDButton,UINT uCheck);获得Radio控件的最终状态:UINT IsDlgButtonChecked(HWND hDlg,Int nlDBUtton);2 如何处理slider control(中文叫做滑竿控件)的相关事件。slider control,其实和上面的那个简单的radio control还是有本质的区别的。radio control是内含在windows的一般库里面的。不需要特别的库的支持,而slider control(英文也叫track bar)是需要COMCTL32lib的支持,要用这个slider control,你需要作三个动作。a 在源文件里面加入COMCTL32lib的引用。b 在头文件里面加入对commctlh的声明,一般加到stdafxh即可。#include // Add by liuzhi

c 在程序里面,需要加入使用common control的宏:InitCommonControls();否则,程序会闪一下就会退出的。因为程序没有申请到该有的资源。 加入对slider control的声明后。需要处理slider control的一些事件。这是需要特别注意的是,slider control不像radio control那样子直接用SDK API就可以处理了。需要特殊的消息机制,下面一一道来:21 获得控件的窗口句柄。slider control也是一个窗口,是对话框的子窗口,因此,要用GetDlgItem来实现:backlight_wnd = GetDlgItem(hDlg, IDC_SLIDER_BACKLIGHT);22 设置slider control的区间,是给slider control发TBM_SETRANGE消息,比如我设置0到100就是:SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(0,100));23 设置滑块的初始位置是发送TBM_SETPOS消息来实现的: SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,(LPARAM)BacklightPercentage);

24 slider control和用户的交互,则是通过WM_HSCROLL消息来实现的,需要在WM_HSCROLL的响应函数里面发送TBM_GETPOS消息得到当前滑块的位置:BacklightPercentage = (unsigned char)SendMessage(backlight_wnd,TBM_GETPOS,0,0);25 旁边的一个当前刻度的数字的说明,需要先设定一个Static text文本控件,然后动态给该控件发送WM_SETTEXT消息来实现动态的更新数字:SendMessage(GetDlgItem(hDlg, IDC_STATIC_BACKLIGHT_VALUE), WM_SETTEXT, 0, LPARAM(szBacklightPercentage));最后面的那个参数,szBacklightPercentage是一个字符串。3 如何在对话框里面显示图标或者:如果程序没有,总是显得十分的死板,因此,在程序上面显示,图标是必要的美化程序的方法。网上关于程序显示的说明也很多。但是都比较的复杂。如果仅仅显示静态的图标,其实不用那么复杂的。31 需要好的icon素材。漂亮的icon素材就如程序的脸蛋一样。是必须的,要得到好的icon素材,第一是到网上“淘宝”。看看能不能找到你满意的。另外也有搜索自己电脑上漂亮图标的工具。因为windows自己也提供了很多的图标资源。这里推荐一个叫做 IconExtract 的小软件。大家可以网上下载,它可以很方便的把本地的图标都挖出来。一般情况下,够我们用的了。找好自己喜欢的图标之后,记得在资源里面的icon项目下引用进来。32 显示图标:如果不是动态显示,就只是简单的在对话框上面加picture控件,然后在属性里面指定icon的来源即可。4 如何响应电源插拔事件:在笔记本上面,ac电源插上和拔出的时候,会有背光亮度的改变,因此需要在知道这个电源来源改变的时候来重新获得当前背光,经查询,程序需要响应WM_POWERBROADCAST消息。如果wParam是PBT_APMPOWERSTATUSCHANGE,就需要重新获得当然背光: case WM_POWERBROADCAST:

if (wParam == PBT_APMPOWERSTATUSCHANGE) // Power source maybe changed, check the backlight again

wcexhIconSm = LoadIcon(wcexhInstance, (LPCTSTR)IDI_ICON_CONFIG2); // IDI_SMALL这样子修改之后,你会发现,程序运行的显示图标是改变了。但是程序exe的图标还是没有改变,这是因为exe和dll默认都显示id为最低的那个icon的图标。因此,在resourceh里面把自己希望显示的图标id和现有的程序图标id换一下就可以了。#define IDI_ICON_CONFIG2 107 // make sure the icon ID is lowest

好了。

win32应用程序:是指窗口类的,即桌面应用系统,有图形化界面,如下图:

win32控制台:是指运行在黑框下的,像cmd之类的

都属于窗口方式!只是开发方式不一样罢了!  Win32是直接用API开发,而MFC是微软把API封装成一个一个的类,便于开发!

什么是Web项目:

web项目通俗的说就是在服务器上跑的项目,页面是通过服务器上的程序运算所得到的结果。常见的web项目按计算机语言分,有:Java Web(Java EE)、ASPNet、PHP项目等,用户通过浏览器进行访问。

以上就是关于VC中的Win32应用程序和MFC程序有什么分别那个功能强现在都用那个全部的内容,包括:VC中的Win32应用程序和MFC程序有什么分别那个功能强现在都用那个、Win32程序员转嵌入式开发需要怎么做、一般开发OpenGL程序是用 控制台 还是 Win32程序 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9489713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存