Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

包结构总览

windows-cj 的工作区由一组职责单一的包组成。你几乎不会一次性用到全部——按需挑选即可。下表按层次分组,方便你定位入口。

基础底座

这几个包提供了贯穿三层 API 的公共类型,几乎所有上层包都依赖它们。

包名(目录)仓颉包名职责
windows-resultwindows_resultHRESULT / Result<T> / BOOL / GUID / WIN32_ERROR 等错误码与底座类型
windows-stringswindows_stringsHString / BSTR / PCWSTR / PWSTR / CWideString 等字符串类型
windows-corewindows_coreCOM 接口底座、vtable、InspectableType 投影、激活工厂缓存、AgileReference、ABI 数组,以及共享的 WinRT-ABI 底座(DateTime / TimeSpan / Point / Rect / Size 等值类型、HResult、QI helper)
windows-polyfillwindows_polyfill语言 / 标准库层面的补齐与兼容 helper
windows-libloadingwindows_libloading动态库加载与导出函数解析(LoadLibrary / GetProcAddress 封装)

COM 接口

包名(目录)仓颉包名职责
windows-interfacewindows_interface声明 COM 接口及其 vtable 布局
windows-implementwindows_implement在仓颉类型上实现既有 COM 接口

WinRT 投影

包名(目录)仓颉包名职责
windows-foundationwindows_foundationFoundation 核心投影:Uri / PropertyValue / IReference / MemoryBuffer / Deferral / EventHandler / TypedEventHandler / IStringable / IClosable
windows-collectionswindows_collectionsWinRT 集合投影与 stock 实现:IVector / IMap / IIterable + StockVectorView / MapView / Iterator
windows-futurewindows_futureWinRT 异步投影与 await 机制:IAsyncOperation / IAsyncAction + handler 家族
windows-numericswindows_numericsNumerics 易用值类型 helper(向量 / 矩阵等)

Win32 子系统

包名(目录)仓颉包名职责
windows-registrywindows_registry注册表读写
windows-serviceswindows_services服务控制管理
windows-threadingwindows_threading线程 / 线程池相关
windows-versionwindows_version系统版本信息查询
windows-variantwindows_variantVARIANT 类型
windows-propvariantwindows_propvariantPROPVARIANT 类型
windows-safearraywindows_safearraySAFEARRAY 类型

工具与支持

包名(目录)仓颉包名职责
windows-targetswindows_targetsGNU 链接器所需的 Windows 导入库资源(链接期资产,非源码依赖)
windows-commonwindows_common中心仓维护的 generated 支持 / 投影子集,以及可复用的底层 native ABI helper 入口(注意:它是支持符号包,不是运行时
windows-winui3windows_winui3WinUI 3 / Windows App SDK 支持包
windows-bindgenwindows_bindgen命令行绑定生成器,按需把元数据生成成仓颉源码包

怎么选

  • 写一个调用传统 Win32 函数的小程序:windows-result + windows-strings(必要时加对应子系统包)。
  • 消费一个 COM 接口:再加上 windows-core
  • 实现自己的 COM 接口:加上 windows-interface + windows-implement
  • 消费 WinRT(集合 / 异步 / Foundation):按需加 windows-collections / windows-future / windows-foundation
  • 写 WinUI 3 界面:从 windows-winui3 入手,它会带入所需的支持符号。

接下来从最简单的场景开始:调用第一个 Win32 API