IDefaultLocation::SetReport 方法 (locationapi.h)

[Win32 位置 API 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 Windows.Devices.Geolocation API。 ]

设置默认位置。

语法

HRESULT SetReport(
  [in] REFIID          reportType,
  [in] ILocationReport *pLocationReport
);

参数

[in] reportType

REFIID ,表示使用 pLocationReport 传递的报表类型的接口 ID。

[in] pLocationReport

指向 ILocationReport 实例的指针,该实例包含来自默认位置提供程序的位置报告。

返回值

可能的值包括(但并不限于)下表中的项。

返回值 说明
S_OK
已成功设置位置报告。
E_INVALIDARG
位置报告包含无效数据。 当公民地址报告不包含有效的 IS0 3166 双字母国家或地区代码,或者纬度/经度报表不包含 -90 到 90 之间的纬度或不包含 -180 到 180 之间的经度时,可能会出现这种情况。
E_ACCESSDENIED
用户没有设置默认位置的权限。

注解

ILocationReport 是特定位置报表类型的基接口。 用于 pLocationReport 的实际接口必须与通过 reportType 指定的类型匹配。

请注意,reportType 指定的类型必须是 ICivicAddressReportILatLongReportIID

纬度/经度报表中提供的纬度和经度必须对应于地球上的某个位置。 否则,此方法返回 HRESULT 错误值。

注意 如果满足以下两个条件,则应用程序不会从 OnLocationChanged 接收预期的位置更改事件。 首先,应用程序在 LOCALSERVICE、SYSTEM 或 NETWORKSERVICE 用户帐户的上下文中作为服务运行。 其次,位置更改事件是由于更改默认位置(当用户在 控制面板 中选择默认位置时手动)或以编程方式在应用程序调用 IDefaultLocation::SetReport 时更改。
 

示例

以下示例演示如何使用市政地址报告设置默认位置。

            // set the civic address fields of the Default Location
            hr = spDefaultLocation->SetReport(IID_ICivicAddressReport, spCivicAddressReport);
            if (E_INVALIDARG == hr)
            {
                wprintf(L"The civic address report has invalid data. ");
                wprintf(L"Country/region must be a valid ISO-3166 2-letter or 3-letter code.\n");
            }
            else if (E_ACCESSDENIED == hr)
            {
                wprintf(L"Administrator privilege required.\n");
            }

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用],Windows 7
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 locationapi.h
DLL LocationAPI.dll

另请参阅

IDefaultLocation