对于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相关推荐

  1. Windows编程(2)

    文章目录 windows有关的重要概念 句柄 窗口 Windows的消息机制 消息结构体 宽字符与Unicode 宽字符串的长度 ASCII 和 Unicode 兼容性问题 Windows数据类型 w ...

  2. 【Windows编程学习笔记】1:实现学生信息管理系统的简易页面

    本学期非常幸运能和李青老师学习使用纯C/C++实现Win32的应用程序开发.开发过程中不使用MFC,而是直接调用WindowsAPI来实现应用程序编程,这样做的好处是能够理解界面程序的实现机制,对于日 ...

  3. 【Windows编程】系列第六篇:创建Toolbar与Statusbar

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微 ...

  4. MFC与Windows编程

    Windows编程基础 MFC:Microsoft Foundation Classes,它封装了WIN32/WIN64功能,在MFC应用程序中,可以使用一组标准类,它们把我们与Windows API ...

  5. Windows编程 第四回 Windows程序的生与死(下)

    致歉 很抱歉,读者看到的这篇文章将是我写的最没什么条理的一篇了,由于这一块儿内容是所有Windows程序的核心与基础,所以我分了三回来写.我想讲 得既易懂有又丰富,无奈本人才疏学浅,每每一提笔就要查很 ...

  6. windows编程常用系统API函数

    windows编程常用API的函数 1. API之网络函数 2. API之消息函数 3. API之文件处理函数 4. API之打印函数 5. API之文本和字体函数 6. API之菜单函数 7. AP ...

  7. Windows编程-001

    如果建立的是Win32控制台工程(入口函数是main函数)的话,WinMain函数不能作为入口函数,如果想要解决这个问题的话,可以打开项目属性->链接器->系统->子系统,把子系统对 ...

  8. 学习C++ Windows 编程(你的第一个Windows程序)

    Module 1. Your First Windows Program (Windows) 模块1. 你的第一个Windows程序 In this module, we will write a m ...

  9. 如何使对话框中接收到WM_CHAR消息(Windows编程)

    我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到:    #include //Declare the Dial ...

最新文章

  1. 建军92周年,让我们了解那些先进的军用机器人
  2. Linux压缩解压命令合集
  3. 怀孕参加计算机考试有辐射吗,电脑辐射对孕妇的影响大不大 会对胎儿造成什么影响...
  4. Python + Steamlit 快速开发可视化 web 页面!
  5. scikit-learn工具包使用建议(转)
  6. C#反射与特性(一):反射基础
  7. youcans 的 OpenCV 学习课—3.图像的创建与修改
  8. leetcode题解189-旋转数组
  9. 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
  10. selenium python grid
  11. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
  12. STM32基于固件库学习笔记(7)I2C通讯协议时序(GPIO模拟协议时序完成MCU对24c02读写数据)
  13. UVA 12676 Inverting Huffman
  14. png转ico 或如何制作ico文件
  15. 微信小程序流量主每天广告收入多少
  16. 电信副卡显示无服务器,电信副卡,你从来就是一个陷阱吗?
  17. 苹果计算机开机进入安全模式,苹果电脑开机步骤
  18. 二十、融会贯通之全流程操作
  19. 第一次见岳父岳母的攻略「转载」
  20. python语言单词_python 单词

热门文章

  1. 手把手教你用视频做闪屏页
  2. 数理统计基础 统计推断概述
  3. Ruby基础入门学习总结
  4. OpenSense -运动学与IMU数据
  5. 镜像法的理解——工程电磁场 P9
  6. 新书推荐——Windows Server 2019 网络服务器配置与管理
  7. el-table 树形表格 自定义展开图标_Fences: 正版桌面图标自动整理栅栏工具 非Steam版...
  8. 红旗linux修改时间,RedFlag官方公布红旗Linux V11版最早的下载体验时间
  9. 基于java房屋租赁系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  10. Ubuntu 安装PostgreSQL