当前位置: 首页 > wzjs >正文

网站全站搜索代码影楼网站制作

网站全站搜索代码,影楼网站制作,开课啦wordpress主题下载,破解wordpress主题教程专栏导航 上一篇:第2章,[标签 Win32] :Windows 字符数据类型 回到目录 下一篇:无 本节前言 在上一节,我们讲解了 WIndows 程序设计中的字符与字符指针类型,包括 ASCII 字符与字符指针,也包…

专栏导航

上一篇:第2章,[标签 Win32] :Windows 字符数据类型

回到目录

下一篇:无

本节前言

在上一节,我们讲解了 WIndows 程序设计中的字符与字符指针类型,包括 ASCII 字符与字符指针,也包括 Unicode 字符与字符指针。

本节,我们来讲解,使用字符串作参数的 Windows 函数。这样的一些个 Windows 函数,所使用的字符串参数,可能是 ASCII 字符串,也可能是 Unicode 字符串。

如何编写程序,使得我们的程序,在调用这些个,使用字符串参数的 Windows 函数的时候,能够兼容 ASCII 字符串与 Unicode 字符串两种字符串参数,是我们本节要去解决的问题。

我们开始。

一.    MessageBox 宏函数

在之前的课节里,我们介绍过 MessageBox 函数。严格来讲,它并不是一个函数,而是一个宏函数。实际调用它的时候,会调用两个函数版本中的一个。这两个函数版本,一个是 ASCII 版的 MessageBoxA,另一个是 Unicode 版的 MessageBoxW 。

MessageBoxA 和 MessageBoxW,它俩不是宏,而是地地道道的函数。

那么,当我们使用 MessageBox 宏的时候,我们究竟是在调用着 MessageBoxA,还是在使用着 MessageBoxW 呢?

请看下面的代码块。

#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif

也就是说,当我们定义了 UNICODE 标识符的时候,MessageBox 宏函数,实际上就等同于 MessageBoxW 函数。当没有定义 UNICODE 标识符的时候,MessageBox 宏函数,实际上就等同于 MessageBoxA 函数。

在这里,UNICODE 标识符,与 _UNICODE 标识符,我们可以将其看作是同义语,对其不作区分。

我们在下面的文章链接里,讲解了如何定义 _UNICODE 标识符,也就是相当于讲解了如何定义 UNICODE 标识符。

第2章 :编写兼容多字节字符集和 Unicode 字符集的 Windows 程序

在上述文章链接的【四.(二)】里面,我们讲解了设置方法。

我们来看一看 MessageBoxA 与 MessageBoxW 的函数声明。

MessageBoxA 的声明如下。

WINUSERAPI int WINAPI MessageBoxA (HWND hWnd, LPCSTR lpText,
                                                                LPCSTR lpCaption, UINT uType);

在上面的函数声明里面,首先出现的东西是 WINUSERAPI,这个东西我们不用管,忽略它就可以了。我们可以将这个东西当作是不存在。这不会影响我们的理解。

接下来的 int,就是返回值类型,为 int 型。

接下来的 WINAPI,它表示的是调用约定。在计算机编程里面,存在着很多种函数调用约定。其中有两种,一个是标准调用,Windows 将其标记为 __stdcall 。另一个是 CDECL 调用约定,Windows 将其标记为 __cdecl 。大多数的 Windows SDK 函数使用的调用约定是标准调用,而大多数的 C 运行库函数,以及我们自定义的函数,都用的是 CDECL 调用约定。

接下来的 MessageBoxA,它是函数名。

再往后,就是形参列表了。

在形参列表里,第一个形参的类型为 HWND,它的含义是窗口句柄。啥是窗口句柄,此处你可以暂时不去深究,有个印象就可以。在将来的 Windows 编程知识的学习中,窗口句柄的概念,我们时不时地都会用到。用得多了,即使不理解,也可以熟练地使用它。此处,我们只要求大家对【窗口句柄】这个数据类型有一个概念。

第二个形参的类型为 LPCSTR,这个 LPCSTR,与【const char *】含义相同。也就是说,第二个参数,需要的是一个常量字符指针。这个字符指针,指向的是一个 ASCII 字符串,字符串中的每一个字符,都是 char 型的。

第三个形参的类型也是 LPCSTR,与第二个参数的类型相同。

第四个形参的类型为 UINT,这个,我们之前没有讲,以后,我们会有专门的章节来列举 Windows 中的各种数据类型。之前,我们讲解过关于字符与字符串的数据类型。在这里,这个 UINT,它其实就是 unsigned int 的意思。

讲完了 MessageBoxA 的函数声明,我们再来看 MessageBoxW 的函数声明。

WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText,
                                                                LPCWSTR lpCaption, UINT uType);

MessageBoxW 的函数声明与 MessageBoxA 大致相同,只是涉及字符串参数的部分有所不同而已。

MessageBoxA 的参数列表里面,使用的字符串参数类型,为 LPCSTR,也就是【const char *】类型。也就是说,MessageBoxA 使用的字符串参数,为 ASCII 字符串,字符串中的每一个字符,为 char 型字符。

MessageBoxW 与 MessageBoxA 不同,它使用的字符串参数类型,为 LPCWSTR,也就是【const WCHAR *】类型,是【const wchar_t *】类型,是【const unsigned short *】类型。也就是说,MessageBoxW 使用的字符串参数,为 Unicode 字符串,字符串中的每一个字符,为 Unicode 字符。

小结一下,MessageBoxA 函数与 MessageBoxW 函数的函数声明大致相同,区别只在于使用的字符串参数的类型。MessageBoxA 函数使用的字符串参数,为 ASCII 字符串,而 MessageBoxW 函数使用的是 Unicode 字符串。

你可以在程序中,直接使用 MessageBox,而不显式地指定使用 MessageBoxA 或 MessageBoxW 。此时,根据你是否设置了 UNICODE 标识符,编译器会自动选择使用 MessageBoxA 或 MessageBoxW 。此时,如果你定义了 UNICODE 标识符,则 MessageBox 宏会被视为 MessageBoxW 函数。如果没有定义 UNICODE 标识符,则 MessageBox 宏会被视为 MessageBoxA 函数。

你也可以显式地指定,是使用 MessageBoxA 还是 MessageBoxW 。这样一来,在同一个程序代码里面,我们可以混合使用 ASCII 版的 Windows 函数与 Unicode 版的 Windows 函数。

不过,一般来讲,我们还是推荐大家直接使用通用的宏,也就是使用 MessageBox,而不是显式地指定 ASCII 版的 MessageBoxA 或者 Unicode 版的 MessageBoxW 。

二.    使用字符串参数的其它 Windows 宏函数

许多的 Windows 宏函数都与 MessageBox 类似,它们均包含 ASCII 版本与 Unicode 版本两种。

比如 Textout 函数,也包含了 TextOutA 和 TextOutW 两个版本。

所有的这些个使用字符串参数的 Windows 函数,它们均分为 ASCII 版与 Unicode 版两种。ASCII 版的 Windows 函数,在宏名的后面,加上一个 A 后缀。Unicode 版的 Windows 函数,在宏名的后面,加上一个 W 后缀。

结束语

本节的内容,不知道,你看懂了没。

如果没看懂,多看几遍吧。某些内容,可以暂时不去深究,了解一下,有个印象就可以。

本节结束。

专栏导航

上一篇:第2章,[标签 Win32] :Windows 字符数据类型

回到目录

下一篇:无

http://www.dtcms.com/wzjs/575135.html

相关文章:

  • 龙岩网站优化费用深圳营销型网站建设公司哪家好
  • 同一个服务器的网站做友情链接wordpress 怎么改中文字体
  • 网站服务器错误最有效的宣传方式
  • 网站页面下载帮人做图挣外快的网站
  • 特卖网站设计建设网站最基本的要了解什么
  • 织梦网站内部优化鸿科经纬教网店运营推广
  • 职业院校专题建设网站上海频道做网站怎么样
  • 网站制作教程psWordPress添加用户投稿
  • 外贸自建站收款通道做封面字体下载好的网站
  • 高端企业建站公司做最好的网站新新
  • 国家网站标题颜色搭配wordpress 商业授权
  • 西安市建设监理协会官方网站建网站的流程
  • 怎样找竞争对手网站wordpress 权限阅读
  • 注册网站发财的富豪写作网站免费
  • 关于做网站流程深圳微商城网站制作价格
  • 域名 网站 区别网站建设公司(深圳信科)
  • 网站ui设计报价单网页设计图片大小设置
  • 网站模板能自己做吗在线测网速
  • 效果好企业营销型网站建设公司wordpress的插件名
  • 手机自适应网站建设开一个小程序要多少钱
  • 吴江手机网站建设价格邢台哪个公司做网站
  • 延吉市建设厅网站接网站建设单子的网站
  • html5网站修改澄迈网站新闻建设房子
  • 开源 网站开发框架网页浏览器缩略词
  • 舞蹈网站建设报价宁波工程建设信息网
  • 大型网站建设一般多少钱广州建设工程交易中心改版
  • 东莞网站制作的方案百度网页制作
  • 网站建设公司 网络服务网站群内容管理系统
  • 怎么做网站计划营销型网站的价格
  • 安康建设网站镇江网红景点