`
febird
  • 浏览: 254239 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WinApi 参数的层次

    博客分类:
  • C++
阅读更多
我以前一直对WinApi参数太多,使用困难颇有微词,但是仔细想想,直接使用Api编程的情况是非常少的。Api难用点,功能强点,好过好用但功能弱。
同时,仔细分析下Api的参数,能发现,它其实是很有设计原则的,我只归纳出以下:
尽量使用单层参数,也是说,参数是简单数据类型,没有内嵌结构;
尽量避免使用多层参数,也就是说,不得不使用结构传递参数的时候,结构里面尽量避免再内嵌其它结构。因此可以看到,一个参数很多的Api中,往往有好几个参数共同表达一个逻辑实体,而在面相对象中,这应该用一个对象来表达。
看看这个Api,很生动的一个例子:
WINSOCK_API_LINKAGE
INT
WSAAPI
GetAddrInfoExW(
    __in_opt    PCWSTR          pName,
    __in_opt    PCWSTR          pServiceName,
    __in        DWORD           dwNameSpace,
    __in_opt    LPGUID          lpNspId,
    __in_opt    const ADDRINFOEXW *hints,
    __deref_out PADDRINFOEXW *  ppResult,
    __in_opt    struct timeval *timeout,
    __in_opt    LPOVERLAPPED    lpOverlapped,
    __in_opt    LPLOOKUPSERVICE_COMPLETION_ROUTINE  lpCompletionRoutine,
    __out_opt   LPHANDLE        lpHandle
    );
分享到:
评论

相关推荐

    WinAPI_test.zip_winapi

    WinAPI(Windows API)是微软为Windows操作系统提供的一组接口函数,用于开发应用程序。...实践中,你可能还会遇到更多复杂的主题,如多线程同步、网络编程、注册表操作等,这些都是WinAPI更深层次的内容。

    最好的Delphi WINAPI (英文)

    书中不仅提供了详细的API函数解释和参数说明,还包含了大量实际代码示例,帮助读者理解如何在具体项目中应用这些API。此外,本书还讨论了API函数的内部机制和工作原理,以及如何优化代码以提高性能。 ### 目标读者...

    VB 写的QQ模拟点击代码

    综上所述,VB实现QQ模拟点击的代码涉及到多个层次的技术,包括VB编程、WinAPI调用、鼠标事件模拟、消息处理、窗口和控件的操作,以及可能的QQ接口利用。这个过程既考验编程技术,也涉及到系统级操作的理解和实践。在...

    Win32 API 参考大全

    `WinAPI函数库.doc`可能是以Microsoft Word文档形式呈现的API库,其中可能详述了各种API函数的功能、参数、返回值以及错误处理等方面的内容,便于开发者深入理解并正确使用。 `COREAPI.HLP`是一个旧版的帮助文件,...

    Win API 实现虚拟磁盘

    这个函数需要提供关于虚拟磁盘的详细信息,如类型(动态扩展、固定大小等)、大小、父VHD(如果有的话)等参数。 `AttachVirtualDisk`函数则用来挂载已存在的VHD文件,使其成为系统中的可访问磁盘。通过这个函数,...

    VC摄像头编程

    对于更复杂的项目,可能还需要集成图形用户界面,如利用MFC或WinAPI创建窗口和控件,以直观地显示摄像头预览和控制参数。 总的来说,基于VC的摄像头编程涉及多个层次的技术,从底层的DirectShow过滤器图构建到上层...

    一级菜单调用二级菜单

    当用户选择一级菜单项时,可以通过WM_COMMAND消息捕获用户的选择,然后根据消息参数来处理相应的二级菜单。 2. **.NET Framework中的MenuStrip控件**:在.NET环境下,MenuStrip控件可以方便地创建和管理菜单。通过...

    钉在桌面的C#程序

    需要导入`User32.dll`库,并设置窗体的句柄、目标窗口、新的位置和大小以及`HWND_BOTTOM`参数,表示置底。 3. **自定义窗体行为**:创建一个自定义窗体类,扩展`Form`类并实现自己的窗体层次管理逻辑。例如,可以...

    C#070所有窗体的最前方

    要使一个窗体始终显示在其他窗口前面,我们可以利用WinAPI(Windows API)中的`SetWindowPos`函数,这是一个操作系统级别的函数,允许我们对窗口的位置和层次进行精细控制。在C#中,我们需要使用P/Invoke技术来调用...

    获取其它进程中TreeView或ListView的内容

    TreeView常用于展示层次结构的数据,如文件系统结构;ListView则常用于显示多列、多行的数据,如任务管理器中的进程列表。在VB(Visual Basic)环境下,我们可以通过WinAPI函数和一些技巧来实现对这些控件的远程访问...

    易语言API创建窗口组件例程源码-易语言

    这将帮助你在易语言编程中提升到更高的层次,掌握更复杂的应用场景。 总的来说,易语言API创建窗口组件是一项基础但重要的技能,通过学习和实践这份源码,你可以深入了解Windows程序的设计原理,并能够创建出自己的...

    Main.rar_C#上位机_win的串口开发_仪器

    6. **树型控件操作**:树型控件是一种常见的用户界面元素,用于展示层次结构的数据。开发者可能使用C#的TreeView控件,来组织和展示仪器的参数设置或状态信息。 7. **文件存档与读取**:在上位机软件中,文件的存档...

    C++Builder C/C++ 文件读写操作总结.doc

    总结,C++Builder提供了丰富的文件操作手段,从C语言的基础接口到C++的面向对象封装,再到WinAPI和VCL库,满足不同层次和需求的文件操作。在实际编程中,应根据项目需求选择合适的方法,并注意正确处理错误和关闭...

    属性页代码

    2. WinAPI:在WinAPI中,可以使用`PropertySheet`函数和`PROPSHEETPAGE`结构来创建属性页。开发者需要手动处理窗口消息,这相比MFC更底层,但提供了更大的灵活性。 3. .NET Framework:在C#或VB.NET等.NET语言中,`...

    18-ex-xml-wern_Windows编程_

    1. **配置文件**:程序可以读取XML配置文件来获取运行时设置,比如用户界面布局、连接字符串或其他应用特定的参数。 2. **数据交换**:XML是跨平台的数据交换格式,Windows应用可以与其他系统(如Web服务、数据库等...

    易语言基于accessible接口打造获取QQ窗口相关信息

    在易语言中,我们需要通过调用WinAPI函数来访问这个接口。 要获取QQ窗口的信息,首先需要找到QQ的主窗口句柄。这通常通过`FindWindow`或`FindWindowEx` API函数完成,需要传入窗口类名或窗口标题作为参数。在易语言...

    C++语言核心.rar

    “高层次”可能意味着这份资料不仅覆盖基础,还可能涉及面向对象编程、模板元编程等高级主题;“教程”则提示这是一份教学性质的材料,适合初学者和进阶者学习。 根据压缩包子文件的文件名称,我们可以推测其中的...

    Hook自定义MessageBox

    6. **Windows API Hooking**:Windows提供了多种Hook类型,如WH_CALLWNDPROC、WH_GETMESSAGE等,它们在不同层次拦截消息处理。在这个项目中,可能会使用SetWindowsHookEx函数来安装一个低级消息钩子,以便在消息传递...

    DOS WINDOWS汇编语言程序设计教程

    例如,使用WinAPI函数CreateFile、WriteFile和CloseHandle进行文件操作,或者使用ExitProcess来结束进程。 此外,汇编语言在系统编程、驱动开发、性能优化等方面具有独特优势。在DOS中,你可以直接控制硬件资源,...

    EasyWindow-开源

    在传统的Windows开发中,程序员通常需要直接处理复杂的WinAPI函数,这些函数涉及大量的参数和回调函数,对初学者和经验不足的开发者来说,学习和使用起来都有一定的难度。EasyWindow则通过封装这些底层细节,提供了...

Global site tag (gtag.js) - Google Analytics