【问题标题】:Where can I find a list of windows API constants, in a none .net enviroment在非 .net 环境中,我在哪里可以找到 Windows API 常量列表
【发布时间】:2009-07-01 20:20:23
【问题描述】:

我想查找一些 windows API 常量的值,例如但不限于 LVM_ENABLEGROUPVIEW & WM_SHOWWINDOW

在网上查看将我带到MSDN,它告诉我它们的用途,而不是基本价值。

stackOverflow 上有一个非常相似的问题,Where can I find a list of windows API constants,但所有答案都是针对 .net,或者假设我有 Windows SDK,据我所知我没有。

那么我在哪里可以找到它们?

如果有影响的话,我使用的是 Delphi 2007,虽然它在 Messages 单元中有很多内容,但它并不包含所有内容,包括一些最新的内容。

谢谢

【问题讨论】:

    标签: windows delphi


    【解决方案1】:

    下载SDK 并使用您喜欢的全文搜索工具搜索头文件(所有.h 文件)。

    Pinvoke.net 可以在紧要关头提供服务(常量),但不一定具备所有功能。

    消息值在所有开发环境中都是不变的。

    【讨论】:

      【解决方案2】:

      大部分都可以在 VCL 源代码中找到,主要是在 Windows.pas 文件中。最好的办法是执行 Search|Find In Files,键入要查找值的常量的名称,设置 Search Directories 选项,将文件掩码设置为 *.pas,然后输入包含以下内容的文件夹的路径Windows.pas。 IDE 将找到该常量的所有用途并将它们放在搜索结果窗口中;双击该窗口中的源代码行将打开该行的文件。

      正如 Kevin 和 GameCat 所提到的,其他可以在 Windows SDK 的标头 (.h) 文件中找到,可从 MSDN 下载。

      【讨论】:

      • Windows.pas 没有大部分常用控件的常量。这些在 CommCtrl.pas 中。
      • @Cobus:我是说 Windows.pas 拥有它们吗? :-) 你一定错过了我帖子的“在文件中查找”部分。它涵盖了在 Windows.pas 中找不到的那些。
      【解决方案3】:

      优秀的Delphi JEDI项目将大部分Windows API头文件转换为delphi/pascal。在JEDI 站点查看win32api。

      【讨论】:

        【解决方案4】:

        您可以查看常量的 windows 单位源(和相关单位)。他们使用有限的 cmets。

        Windows SDK 帮助提供了更多答案。

        互联网上的其他 MSDN。

        获取完整列表需要进行一些研究。但最终你将能够找到所有的答案。

        【讨论】:

          【解决方案5】:

          您可以使用ApiViewer。 最初是为 VB6 开发的,它可以设置为以 object pascal 语言显示声明,这可以节省您的一些输入。

          请注意,它的数据库并不完美。一些函数定义不正确,还有一些常量(比如 0xFFFF 而不是 0xFFFFFFFF)。

          【讨论】:

            【解决方案6】:

            LVM_ENABLEGROUPVIEW 和 co 位于 CommCtrls.pas - 它们可能在 Delphi 2007 中,但我没有检查:

              LVM_FIRST               = $1000;     
              LVM_SETGROUPMETRICS         = LVM_FIRST + 155;
              LVM_GETGROUPMETRICS         = LVM_FIRST + 156;
              LVM_ENABLEGROUPVIEW         = LVM_FIRST + 157;
              LVM_SORTGROUPS              = LVM_FIRST + 158;
            

            WM_SHOWWINDOW 应该在 Delphi 2007 的 Windows.pas 中 - 开始搜索 SW_HIDE。或者,您可以查看 this post on translating API calls,它不仅包含您要查找的值,还展示了如何以类型安全的方式使用它们。

            Delphi 2007 的 CommCtrl.pas 有很多消息和 API 宏,这些消息和 API 宏在 VCL 中的任何地方都没有使用,在 Delphi 中也没有记录,而且该单元总是值得一看。

            更一般地说,如果您在 MSDN(或 Delphi 帮助文件)上查找任何 API 调用,它会在 Function Information 下方列出头文件的名称。如果此标头在 Win*.h 中,请查看 Windows.pas。大多数其他内容都可以在具有该名称的 pas 文件中找到(因此 commctrl.h 变为 commctrl.pas)。

            更新: LVM_ENABLEGROUPVIEW 以及 ListView_EnableGroupView 宏在 Delphi 2007 上可用。

            【讨论】:

              【解决方案7】:

              除了其他人所说的(所有有效和好的建议)之外,Google 还是您的朋友。搜索“#define WM_Whatever”。

              例如:http://www.google.si/search?&q=%23define+LVM_ENABLEGROUPVIEW

              【讨论】:

                猜你喜欢
                • 2010-10-17
                • 2017-10-08
                • 1970-01-01
                • 1970-01-01
                • 2011-05-22
                • 1970-01-01
                • 2013-09-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多