首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么win32 API函数没有重载,而是使用Ex作为后缀?

在Windows API中,函数名称使用"Ex"作为后缀是为了提供更多的功能和灵活性。这种做法有以下优势:

  1. 向后兼容:在Windows API中,许多函数都有一个"Ex"版本,这是为了确保向后兼容。这意味着,如果您使用旧版本的Windows API,您的代码将继续运行,而不会出现问题。
  2. 更多的功能和选项:"Ex"版本的函数通常提供更多的功能和选项。这使得开发人员可以更轻松地定制应用程序以满足特定需求。
  3. 更好的性能:在某些情况下,"Ex"版本的函数可能具有更好的性能,因为它们可以更有效地利用操作系统的资源。
  4. 更安全:"Ex"版本的函数通常更安全,因为它们提供了更多的安全选项。这有助于防止安全漏洞和数据泄露。

例如,在Windows API中,"MessageBox"函数有一个名为"MessageBoxEx"的"Ex"版本。这个版本的函数允许开发人员指定一个额外的参数,该参数指定了消息框的语言。这使得应用程序可以更好地支持多语言用户界面。

总之,"Ex"后缀的目的是为了提供更多的功能和灵活性,以及更好的性能和安全性。这使得Windows API成为了一个功能强大且易于扩展的平台。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CC+的角角落落 第二辑 002

没有类等概念,使用大量流程式,函数式的代码写一个窗体应用是一件很恐怖的事情)。...MFC相当彻底的用类封装了Win32 API,使得C程序员的开发窗体类应用的效率大大提高了。...WinMain函数的作用和我们制作控制台程序时的main函数的作用是相同的,你的程序将从WinMain函数作为函数开始执行。...最后给出一个使用API构建包含一个窗体的应用程序实例。 其中没有说明的是DefWindowProc函数,该API函数为你处理并响应一些默认的鼠标和键盘操作产生的消息。...必须要说的是,必要的API类似单不同的函数的辨析我都略去了,其中问题包括一堆可互相替代使用API函数,加与不加后缀Ex函数的区别以及,消息处理机制的部分重要内容,一切只为突出本文的重点,描绘出Windows

86350

原 What Every Dev need

最多的是抛出、捕获异常的函数。因为代码中必须明确的抛出异常和捕捉并正确的处理异常,甚至函数没有抛出异常,但是它可能调用了一个抛出异常的函数,因此函数必须正确的处理抛出的异常。...有时, 与HRException一样, 该值来自某个com源, 但内部错误和Win32 API故障也有HRESULTS。...重点:EX_TRY_FOR_FINALLY宏使用SEH而不是c++的EH,C++编译器不允许在同一个函数中混合使用SEH和EH.具有自动析构的局部变量需要c++EH来执行析构函数。...因此,使用EX_TRY_FOR_FINALLY的函数不能使用EX_TRY,也不能使用带有自动析构的局部变量。...但是如果没有使用的高层函数使用EX_THROW也可以。 宏有两个参数,一个是抛出异常的类型(c++异常的子类),还有一个异常构造函数的参数列表。

1.2K80

Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式

用到这个功能最多的是 UWP 应用,但是经过考古在 Win8 的全屏应用也用到这个技术,在 win32 函数里面的 CreateWindowEx 方法创建窗口的时候,可以通过传入 WS_EX_NOREDIRECTIONBITMAP...这适用于没有可见内容的窗口,或者使用表面以外的机制来提供其视觉效果的窗口。...当然处理 UWP 之外,使用 WPF 也是可以做到的,请看 WPF 使用 Composition API 做高性能渲染 当然这需要来聊下 DWM 是怎么工作的,从大佬的 Windows with C++...那为什么这个表面叫重定向表面原因是GDI绘图命令甚至Direct3D交换链表示请求都被重定向或通过复制(在GPU内做的)重定向表面 而通过 DirectComposition 则是由软件自己实现管理和创建表面...每个微软添加的 API 大部分都是有历史原因的,为什么添加这个 API 解决什么问题,大概都是遇到某个问题,但是正经解决方案解决不了,因为有历史原因,所以换了一个咱看起来很诡异的方法解决 Extended

1.8K20

duilib基本流程

是一个默认的消息循环,什么消息都不响应 delete wnd; // 删除对象 return 0; } 在这创建了一个对话框,但是如果加上消息循环就表示它是一个非模态对话框,这个窗口我没有给它菜单栏...,也就没有关闭按钮,如果作为非模态对话框,要加上一句CPaintManagerUI::MessageLoop();给它一个消息循环。...但是它将不能关闭,只能通过任务管理器强制结束,使用ShowModal表示将它作为模态对话框,在win32中模态对话框使用它自己的消息循环,也就不需要自己给它一个消息循环,它可以在任务栏上被关闭。...(WS_EX_WINDOWEDGE) #define UI_WNDSTYLE_EX_DIALOG (WS_EX_TOOLWINDOW | WS_EX_DLGMODALFRAME) //下面是窗口类类型...如果熟悉WIN32编程,那么很容易知道这些都代表什么

1.5K10

python3使用ctypes在wind

python3使用ctypes在windows中访问C和C++动态链接库函数示例 这是我们的第一个示例,我们尽量简单,不传参,不返回,不访问其他的动态链接库 一 测试环境介绍和准备 测试环境: 操作系统...__declspec(dllexport) 是windows中特有的导出库函数,如果没有这个库函数是访问不到的,如果做跨平台到linux中可以通过宏语法把它去掉。...我们编译出win32的debug库,注意位数不能错,如果是python是64位的也编译64位的库 ?...from ctypes import 导入ctypes库所有类和函数 CDLL("testctype")加载具体的动态链接库文件,可以加入路径比如 dll/testctype ,在windows中省略动态库的后缀名...lib.CFunction() 加载动态链接库中的CFunction函数,注意虽然我们用c++来做扩展库,python本身也做了很多支持c++的代码,但ctypes访问函数只支持C语言函数,C++函数因为有重载函数名不确定

1.5K31

初识EasyX图形编程

、 即使有的学校教图形编程,也是使用一些难度较高的, 比如Win32,OpenlGl门槛依然很高,初学者容易收到打击。 开始引出我们的EasyX。...用户对于图形库中函数的调用,最终都会由Windows的底层API实现。 3.安装 Easyx图形库支持Vs各种版本,下载解压后,直接执行安装程序即可。...9.图像处理函数 图像处理函数用于在窗口上显示图片 10.鼠标消息函数 鼠标消息函数用于获取鼠标的信息 11.键盘消息函数 键盘消息函数用于获取键盘按键消息。...后缀要是cpp 参数错误,找不到对应的函数:error C2665: “outtextxy”:2个重载没有一个可以转换所有参数类型。...不需要添加任何代码,项目-属性-常规-字符集-使用多字节字符集

40610

PHP 中的操作符重载

通过调用如下的 Zend API,我们可以用自定义的函数来替代 Zend VM 内置的操作码处理函数: ZEND_API int zend_set_user_opcode_handler( zend_uchar...); 操作码处理函数接受 execute_data 指针作为参数,并返回一个整型,其值为下述之一,代表该函数执行完成后进行的下一步操作。...ZEND_USER_OPCODE_DISPATCH 表示该操作码并没有被执行,应先转为使用内置操作码处理函数去执行,再执行下一行指令。...但这个 hack 是在解析语法树时做的,没有提供 API 可供我们用自定义方法去替换,需要修改 PHP 的源码并重新编译 PHP。此外,这个做法很可能会影响其在未来 PHP 版本中的兼容性。...这不难理解,因为在常规的使用场景下,后缀自增 / 自减操作符需要将自己的初始值保存在一个临时变量中返回,而前缀自增 / 自减操作符先执行自增 / 自减操作再返回,无需释放临时变量。

1.5K30

实用FRIDA进阶:内存漫游、hook anywhere、抓包

1 内存漫游 Frida只是提供了各种API供我们调用,在此基础之上可以实现具体的功能,比如禁用证书绑定之类的脚本,就是使用Frida的各种API来组合编写而成。...当然,这里还是会有读者疑惑,为什么导入Charles的证书之后,app抓包就正常了呢?...,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的...图2-19 Charles导入客户端证书的界面 3.3 SSL Pinning Bypass 上文中我们还有一种情况没有分析,就是客户端并不会默认信任系统根证书目录中的证书,而是在代码里再加一层校验,这就是证书绑定机制...,这时候就需要具体情况具体分析,比如谷歌的protobuf框架等; Native层:一般使用的是C Socket API,一般hook住send()和recv()函数可以得到其发送和接受的内容 抓包方法分为三种

3K11

实用FRIDA进阶:内存漫游、hook anywhere、抓包

1 内存漫游 Frida只是提供了各种API供我们调用,在此基础之上可以实现具体的功能,比如禁用证书绑定之类的脚本,就是使用Frida的各种API来组合编写而成。...当然,这里还是会有读者疑惑,为什么导入Charles的证书之后,app抓包就正常了呢?...,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的...图2-19 Charles导入客户端证书的界面 3.3 SSL Pinning Bypass 上文中我们还有一种情况没有分析,就是客户端并不会默认信任系统根证书目录中的证书,而是在代码里再加一层校验,这就是证书绑定机制...,这时候就需要具体情况具体分析,比如谷歌的protobuf框架等; Native层:一般使用的是C Socket API,一般hook住send()和recv()函数可以得到其发送和接受的内容 抓包方法分为三种

2.4K00

C++ 类使用规范建议

如果需要更多的函数功能,class更适合,如果不确定的话,直接使用class。 如果与STL结合,对于仿函数(functors)和特性(traits)可以不用class而是使用struct。...接口继承可用于程序上增强类的特定API的功能,在类没有定义API的必要实现时,编译器同样可以发现未实现API的错误。...使用继承的相关规范: (1)所有继承尽量使用public的,如果想私有继承的话,应该采取包含基类实例作为成员的方式作为替代。 (2)不要过多使用实现继承,组合通常更合适一些。...缺点:Interface后缀增加了类名长度,为阅读和理解带来不便,同时,接口特性作为实现细节不应暴露给客户。...操作符重载(Operator Overloading) 除少数特定环境外,不要重载操作符。 定义:一个类可以定义诸如+、/等操作符,使其可以像内建类型一样直接使用

1.8K20

Google C++编程风格指南(四)之类的相关规范

如果需要更多的函数功能,class更适合,如果不确定的话,直接使用class。 如果与STL结合,对于仿函数(functors)和特性(traits)可以不用class而是使用struct。...接口继承可用于程序上增强类的特定API的功能,在类没有定义API的必要实现时,编译器同样可以侦错。 缺点:对于实现继承,由于实现子类的代码在父类和子类间延展,要理解其实现变得更加困难。...缺点:Interface后缀增加了类名长度,为阅读和理解带来不便,同时,接口特性作为实现细节不应暴露给客户。...尤其是不要仅仅为了在STL容器中作为key使用重载operator==或operator<,取而代之,你应该在声明容器的时候,创建相等判断和大小比较的仿函数类型。...为后缀,除提供带实现的虚析构函数、静态成员函数外,其他均为纯虚函数,不定义非静态数据成员,不提供构造函数,提供的话,声明为protected; 为降低复杂性,尽量不重载操作符,模板、标准类中使用时提供文档说明

85221

lib文件和dll文件的区别_dll2lib

LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。...在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中相应函数代码的地址,从而节省了内存资源。DLL和LIB文件必须随应用程序一起发行,否则应用程序会产生错误。...如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载。 2....如果不想用lib文件或者没有lib文件,可以用WIN32API函数LoadLibrary、GetProcAddress装载。...造成这种错误的原因正是导出函数的修饰名称。在dll二进制文件中,经过编译器的“加工”,实际上有了不同的名称。这也是函数重载机制得以实现的一个技术支持。怎么办呢?

2.7K10

谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比较

实际上,ModifyStyleEx只是对窗口的GWL_EXSTYLE属性作设定,也即只是对窗口的常规扩展属性作设定,这种属性以WS_EX_作为前缀,比如WS_EX_CLIENTEDGE, 在listctrl...控件中,它的扩展风格的值并没有存入窗口的GWL_EXSTYLE属性值中,而是通过发送LVM_SETEXTENDLISTVIEWSTYLE消息给listctrl控件来实现,因此它就不能通过ModifyStyleEx...比较起ModifyStyle,该API即可设定普通窗口的风格,比如WS_CHILD,WS_VISIBLE。...create函数的原因: m_list.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,CRect(0,0,100,100),this,0); 但对于扩展风格却不能这么做:...),this,0); 为什么微软没有把控件的扩展风格储存在GWL_EXSTYLE属性中,因为这个属性值为32位长的DWORD型,窗口的常规扩展属性即以WS_EX_作为前缀的属性,已经把它占完了,所以对listctrl

38330

OpenGL开发库的详细介绍zz

函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能,此函数由glut.dll来负责解释执行。...Win32 API函数库  包含有6个函数函数名无专用前缀。 是win32扩展函数。这部分函数主要用于处理像素存储格式和双帧缓存。这6个函数将替换Windows GDI中原有的同样的函数。...OpenGL函数,并没有在标准OpenGL库中实现,或者它们是用来扩展已存在的OpenGL函数的功能。...扩展源由扩展函数后缀来指明(或使用扩展常量后缀)。例如,后缀WIN表明一个符合Windows规范的扩展,EXT或ARB后缀表明该扩展由多个卖主定义。...– Sun Microsystems WIN – Microsoft 由于OpenGL扩展在针对不同平台和不同驱动,OpenGL不可能把所有的接口程序全部放到gl.h、glx.h、wgl.h中,而是将这些函数头放在了

1.8K30
领券