Windows 头文件中的“#ifdef _MAC”是什么意思?

2023-12-31

我正在浏览 Windows Platform SDK 头文件(真是太棒了,对吧?),我注意到很多地方都包含对预处理器符号的引用_MAC。例如:

// WinUser.h line 1568
/*
 * Message structure
 */
typedef struct tagMSG {
    HWND        hwnd;
    UINT        message;
    WPARAM      wParam;
    LPARAM      lParam;
    DWORD       time;
    POINT       pt;
#ifdef _MAC
    DWORD       lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

正如它所显示的那样,这是否意味着“Macintosh”?曾经有一段时间可以为 Macintosh 编译 Windows 或 Windows 的子集吗?


微软曾一度是世界上最大的麦金塔软件开发商。 Excel 和 Word 在 Macintosh 上占据了各自的市场,后来 Office 也占据了主导地位。因此,MS 的应用程序部门想要在 MAC 上运行的 Windows 头文件的子集也就不足为奇了,以使他们的跨平台软件更易于维护。

但从来没有任何版本的 Windows 操作系统可以在 Macintosh 上运行。

无论如何,这个片段来自 objidl.h,似乎表明 _MAC 确实意味着头文件中的 Macintosh...

//FSSpec is Macintosh only, defined in macos\files.h
#ifdef _MAC
    typedef struct tagSTATSTG
    {                      
        LPOLESTR pwcsName;
            FSSpec *pspec;
        DWORD type;
        ULARGE_INTEGER cbSize;
...
    } STATSTG;
#else //_MAC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 头文件中的“#ifdef _MAC”是什么意思? 的相关文章

  • 如何使用 P/Invoke 在 PowerShell 1.0 中调用 Win32 函数?

    在许多情况下 从 PowerShell 脚本调用 Win32 函数或其他一些 DLL 会很有用 给定以下函数签名 bool MyFunction char buffer int bufferSize 我听说 PowerShell CTP 2
  • win32 Python - pythoncom 错误 - ImportError: 没有名为 pywintypes 的模块

    我正在尝试导入 pythoncom 但它给了我这个错误 Traceback 最近一次调用最后 文件 F Documents and Settings Emery Desktop Python 27 Try 第 2 行 位于 导入python
  • Windows BlockInput 功能不起作用

    Why BlockInput不工作 include
  • 将第二个显示器显示设置更改为复制

    我正在尝试以编程方式使第二个监视器具有重复的显示 我的下面的功能应该将第二个显示器的显示更改为 重复显示 即使第二个显示器显示第一个 主显示器上的所有内容 我的问题 当我运行我的函数时 它成功找到第二个监视器 并通过更改 DEVMODE d
  • Windows 内核中可能的最大文件名长度

    我想知道 什么是longestWindows 内核允许的可能名称长度 例如 我知道内核使用UNICODE STRING结构来保存所有对象路径 并且由于宽字符字符串的字节长度存储在USHORT 允许最大路径长度为 2 15 1 个字符 有没有
  • VirtualProtectEx 失败并显示 ERROR_NOACCESS(错误代码 998)

    CreateProcess something exe NULL NULL NULL FALSE CREATE SUSPENDED NULL NULL sInfo pInfo ReadProcessMemory pInfo hProcess
  • 简单的 C++ 线程

    我正在尝试在 C Win32 中创建一个线程来运行一个简单的方法 我是 C 线程的新手 但对 C 中的线程非常熟悉 这是我想做的一些伪代码 static void MyMethod int data RunStuff data void R
  • 为什么 PathFileExists() 不起作用?

    我想验证文件是否存在 经过一番搜索后 我认为 PathFileExists 可能适合这项工作 但是 下面的代码总是显示该文件不存在 为了确保该文件确实存在 我选择cmd exe的完整路径作为测试文件路径 我使用的是 Windows 7 x6
  • FAT-32 上的 Unicode 文件名?

    据我了解 NTFS 支持 Unicode 文件名 正如 Microsoft 声称的那样 UTF 16 但官方 MSDN 文档对于使用什么代码页在 FAT 32 上存储文件名 文件路径 非常模糊 这里说的是OEM 代码页 我假设是CP437
  • 使用createremotethread注入dll

    createremotethread如何在进程内执行dll 它使用的参数之一是 loadlibraryA 所以我得到了它在进程中执行 loadlibrary 函数的部分 然后它应该将上下文切换到内核模式 dll 是否由具有 loadlibr
  • 如何获取重定向路径的实际路径?

    在 64 位上运行的 32 位进程会得到广义的由于文件重定向 指向重定向路径的路径 致电GetCurrentDirectory 例如 如果进程正在运行 Windows SysWOW64会得到结果 Windows System32 不过 很有
  • C# 4.0 动态对象和 WinAPI 接口,如 IShellItem(无需在 C# 源代码中定义它们)

    是否可以 使用 C 4 0 中的新动态关键字 使用接口 如 IShellItem 或其他 WinAPI 接口 而无需在 C 源代码中定义它们 或者至少不定义接口成员 我正在尝试类似的事情 const string IShellItemGui
  • 在 Windows 中从文件名获取驱动器号

    是否有 Windows API 函数可以从 Windows 路径中提取驱动器号 例如 U path to file txt U path to file txt 在正确整理的同时 relative path to file txt alte
  • 如何使用 win32com.client api 访问 MS Word 的脚注

    我正在尝试使用 win32com client api 访问 MS Word 文件的脚注 我已经用谷歌搜索过 但没能找到合适的方法 我使用 python docx 来实现上述目的 但我发现当前版本的 python docx 无法访问 MS
  • 如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

    如何在 Windows 上关闭 tcp v4 和 tcp v6 连接 我不想终止具有开放连接的整个进程 因为这显然会将其他人踢出该进程 我需要从一个单独的进程执行此操作 因此无法访问套接字句柄等 我正在使用 Windows API 来获取
  • 使用命名互斥体的存在作为指示符是个好主意吗?

    我使用命名互斥体来检测应用程序的其他实例并相应地退出 并发现有两种方法可以执行此操作 创建互斥锁 忽略它是否已经存在的指示 尝试获得它 使用获取成功 失败的事实 创建互斥锁 使用指示是否已经存在 我无法决定是否获取互斥锁 并在退出时释放 一
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 编写一个加载 msvcr80.dll 并公开 free() 函数的 DLL

    我有一个依赖于 MSVCR80 的第三方 DLL 并分配我需要清理的资源 图书馆有not暴露一个free 执行此操作的函数 相反 我需要加载相同的运行时库并手动调用free功能 作为一种解决方法 我尝试编写一个 包装器 DLL 它加载正确的
  • 如何处理来自单独线程的窗口消息?

    我希望启动一个单独的线程来处理窗口消息 通过阻塞 GetMessage 循环 但之后仍然在初始线程中创建窗口 在单独的线程中 一旦启动 我就会调用PeekMessage使用 PM NOREMOVE 确保消息队列存在 有必要吗 然后 Atta
  • 可以在滚动条上绘画吗?

    是否可以在 TMemo TListbox 等标准控件的滚动条上进行绘制 我所需要的只是在滚动条上绘制一些基本形状 并且我试图避免从 stratch 实现整个滚动内容 有什么指点吗 蒂亚 确实有可能 你可能想看一下WM NCPAINT消息 这

随机推荐