IPersist::GetClassID 方法 (objidl.h)
检索对象的 CLSID () 的类标识符。
HRESULT GetClassID(
[out] CLSID *pClassID
);
[out] pClassID
指向返回时接收 CLSID 的位置的指针。 CLSID 是一个全局唯一标识符 (GUID) ,它唯一表示定义可操作对象数据的代码的对象类。
如果该方法成功,则返回值S_OK。 否则,它将E_FAIL。
GetClassID 方法检索对象的类标识符 (CLSID) ,在后续操作中用于将特定于对象的代码加载到调用方上下文中。
容器应用程序可能会调用此方法来检索它正在将其视为不同类的对象的原始 CLSID。 如果用户执行需要保存对象的编辑操作,则此类调用是必需的。 如果容器使用 treat-as CLSID 保存它,则原始应用程序将无法再编辑对象。 在这种情况下,容器通常调用 OleSave 帮助程序函数,该函数执行所有必要的步骤。 因此,大多数容器应用程序无需直接调用此方法。异常是一个容器,它为某些对象提供对象处理程序。 具体而言,容器应用程序不应获取对象的 CLSID,然后使用它从注册表中检索类特定信息。 相反,容器应使用 IOleObject 和 IDataObject 接口直接从 对象检索此类特定于类的信息。
通常,此方法的实现只是为 对象提供常量 CLSID。 但是,如果对象的 TreatAs 注册表项是由支持仿真 (的应用程序设置的,并且将对象视为其他类) 之一,则对 GetClassID 的调用必须提供 TreatAs 键中指定的 CLSID。 有关仿真的详细信息,请参阅 CoTreatAsClass。当对象处于运行状态时,默认处理程序调用 GetClassID 的实现,该实现将调用委托给 对象中的实现。 当对象未运行时,默认处理程序会改为调用 ReadClassStg 函数来读取保存在对象的存储中的 CLSID。
如果要为对象编写自定义对象处理程序,可能只需将此方法委托给默认处理程序实现 (请参阅 OleCreateDefaultHandler) 。
此方法返回CLSID_StdURLMoniker。要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |