为什么Windows编程都用UNICODE
对于C++编程来说,无非ANSI和UNICODE,他们之间的区别这里就不赘述了,今天我们要说的士我为什么建议你用UNICODE进行编程。
1、有些基础的都应该知道,一般来说Windows函数都有两个版本,比如最常见的MessageBox有MessageBoxW和MessageBoxA,分别适用于两种字符集。可能你要说,你一直用的是MessageBox,那是因为你调用的知识一个宏
#ifdef _UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif
其他的函数也是同理。
2、在Windows Visa版本中,应用程序最后执行的都是UNICODE版本的函数,如果你调用的是ANSI的,那么ANSI版本的函数只是作为一个转换层(分配内存,转换为UNICODE),然后执行UNICODE版本的函数。无意,使用ANSI会有更多的开销。
3、另外,在进行ANSI向UNICODE转换的过程中,一些Windows函数存在BUG,所以应该直接使用UNICODE来避免。
4、有一些函数是为了兼容之前的16位Windows程序,比如OpenFile,在调用这些函数后他们也会进行一些转换,最后调用新的函数,比如CreateFile,所以直接使用CreateFile会更高效。
5、COM接口方法只接受UNICODE
6、.NET Framework集成只接受UNICODE
为什么Windows编程都用UNICODE相关推荐
- Windows编程(2)
文章目录 windows有关的重要概念 句柄 窗口 Windows的消息机制 消息结构体 宽字符与Unicode 宽字符串的长度 ASCII 和 Unicode 兼容性问题 Windows数据类型 w ...
- 【Windows编程学习笔记】1:实现学生信息管理系统的简易页面
本学期非常幸运能和李青老师学习使用纯C/C++实现Win32的应用程序开发.开发过程中不使用MFC,而是直接调用WindowsAPI来实现应用程序编程,这样做的好处是能够理解界面程序的实现机制,对于日 ...
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微 ...
- MFC与Windows编程
Windows编程基础 MFC:Microsoft Foundation Classes,它封装了WIN32/WIN64功能,在MFC应用程序中,可以使用一组标准类,它们把我们与Windows API ...
- Windows编程 第四回 Windows程序的生与死(下)
致歉 很抱歉,读者看到的这篇文章将是我写的最没什么条理的一篇了,由于这一块儿内容是所有Windows程序的核心与基础,所以我分了三回来写.我想讲 得既易懂有又丰富,无奈本人才疏学浅,每每一提笔就要查很 ...
- windows编程常用系统API函数
windows编程常用API的函数 1. API之网络函数 2. API之消息函数 3. API之文件处理函数 4. API之打印函数 5. API之文本和字体函数 6. API之菜单函数 7. AP ...
- Windows编程-001
如果建立的是Win32控制台工程(入口函数是main函数)的话,WinMain函数不能作为入口函数,如果想要解决这个问题的话,可以打开项目属性->链接器->系统->子系统,把子系统对 ...
- 学习C++ Windows 编程(你的第一个Windows程序)
Module 1. Your First Windows Program (Windows) 模块1. 你的第一个Windows程序 In this module, we will write a m ...
- 如何使对话框中接收到WM_CHAR消息(Windows编程)
我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到: #include //Declare the Dial ...
最新文章
- 建军92周年,让我们了解那些先进的军用机器人
- Linux压缩解压命令合集
- 怀孕参加计算机考试有辐射吗,电脑辐射对孕妇的影响大不大 会对胎儿造成什么影响...
- Python + Steamlit 快速开发可视化 web 页面!
- scikit-learn工具包使用建议(转)
- C#反射与特性(一):反射基础
- youcans 的 OpenCV 学习课—3.图像的创建与修改
- leetcode题解189-旋转数组
- 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
- selenium python grid
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
- STM32基于固件库学习笔记(7)I2C通讯协议时序(GPIO模拟协议时序完成MCU对24c02读写数据)
- UVA 12676 Inverting Huffman
- png转ico 或如何制作ico文件
- 微信小程序流量主每天广告收入多少
- 电信副卡显示无服务器,电信副卡,你从来就是一个陷阱吗?
- 苹果计算机开机进入安全模式,苹果电脑开机步骤
- 二十、融会贯通之全流程操作
- 第一次见岳父岳母的攻略「转载」
- python语言单词_python 单词
热门文章
- 手把手教你用视频做闪屏页
- 数理统计基础 统计推断概述
- Ruby基础入门学习总结
- OpenSense -运动学与IMU数据
- 镜像法的理解——工程电磁场 P9
- 新书推荐——Windows Server 2019 网络服务器配置与管理
- el-table 树形表格 自定义展开图标_Fences: 正版桌面图标自动整理栅栏工具 非Steam版...
- 红旗linux修改时间,RedFlag官方公布红旗Linux V11版最早的下载体验时间
- 基于java房屋租赁系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- Ubuntu 安装PostgreSQL