Windows平台下界面编程技术
acmilan2016/04/28软件综合 IP:四川
1.控制台界面

可满足大多数顺序执行、文本交互的程序的要求。缺点是对国际字符的支持不是很好。

2.Win32对话框

可满足一般的简单图形交互的工具程序的要求,运行效率也比较高。缺点是控件太少。且嵌入ActiveX控件困难。如果需要嵌入ActiveX控件(如WebBrowser)可以考虑使用MFC或ATL对话框。对于微型工具程序建议使用。

3.Win32框架窗口

可满足简单的单文档、MDI多文档,菜单和固定式工具栏编程,需要更多功能的话需要自己手动实现,并且嵌入ActiveX控件困难。仅学习使用。

4.Windows窗体应用程序(Windows Forms)

既可满足简单的对话框式应用程序,又可满足复杂的单文档、MDI多文档、分割式窗口等功能。如果需要停靠支持可以使用AvalonDock等插件实现。集成于.NET框架。

5.WPF

和Windows Forms类似,但使用XAML设计,使用DirectX作为渲染引擎,原生分辨率无关渲染,无缝支持高分屏,并且按可视化元素而不是子窗口渲染,设计比Windows Forms灵活,适合于编写界面华丽的应用程序。缺点是内存占用比Windows Forms大得多,并且不跨平台。集成于.NET 3.0+框架。

6.UWP

和WPF类似,不过由于来自Windows 8应用框架窗口化而来,所以它以Page而不是Window为单位(也可以新建窗口,但比较麻烦),并且风格更加触摸化。目前只有Windows 10才能支持UWP。

7.Qt[第三方]

和WPF类似,但使用OpenGL渲染,使用C++或QML设计。它使用C++编写,效率比WPF高一些。如果不调用平台相关的WinAPI的话,还可以跨平台。适合任何类型的程序。目前使用LGPL和商业双重协议。

XXXXK+[第三方]

和Qt类似,但是支持使用C语言编写。不过内部使用UTF-8而不是UTF-16编码,在Windows平台下使用起来有点麻烦。适合任何类型的程序。目前使用LGPL协议。

9.wxWidgets[第三方]

差不多是MFC的改进版,但是跨平台,可编译为Win32、GTK+、Qt等底层实现。适合任何类型的程序。目前使用wxWindows协议。

10.MFC框架窗口

可满足复杂的单文档、MDI多文档、悬浮式工具栏、分割式窗口、选项卡式文档、多顶级文档、多侧边栏等界面,但是必须使用它的文档-视图框架,不使用此框架则不能享受某些功能。缺点是限制太多,并且不是可视化设计,而且不跨平台。不建议使用。目前使用MS-PL协议。

11.WTL

基于ATL对WinAPI轻量级包装的类库,很多东西还得调用WinAPI。没有文档和技术支持。强烈不建议使用。目前使用MS-PL协议。

12.DUILIB[第三方]

使用GDI+自绘控件的界面库,适合编写华丽的界面。但由于授权协议的关系,后来被各大流氓软件厂商fork然后私有化了,现在基本已停止更新。缺点是目前为止官方版本不支持高分屏,且没有文档和技术支持。强烈不建议使用。目前使用MIT协议。

[修改于 8年8个月前 - 2016/04/29 15:17:18]

来自:计算机科学 / 软件综合
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
acmilan 作者
8年8个月前 修改于 8年8个月前 IP:四川
817683
一般来说,程序没必要使用WinAPI编写,太麻烦了。

如果可以接受.NET框架的话(一般是应用软件和一般的工具软件)——
如果可以接受.NET框架,要完全原生的体验,用Windows Forms。
如果可以接受.NET框架,内存足够大,想把界面做得华丽一些,用WPF。

如果不能接受.NET框架的话(一般是运行环境特殊的工具软件或跨平台软件)——
如果不能接受.NET框架,界面要求原生的体验,用wxWidgets。
如果不能接受.NET框架,想把界面做得华丽一些,用Qt。
如果不能接受.NET框架,也不能接受C++的话,用GTK+。

如果不能接受.NET或其它的框架,只需要非常简单的GUI界面的话,用Win32对话框。
如果不能接受.NET或其它的框架,而且不需要GUI界面的话,用控制台程序。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
acmilan
进士 学者 笔友
文章
461
回复
2934
学术分
4
2009/05/30注册,5年10个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}