Метод ILocationEvents::OnStatusChanged (locationapi.h)
[API расположения Win32 доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте API Windows.Devices.Geolocation . ]
Вызывается при изменении состояния отчета.
Синтаксис
HRESULT OnStatusChanged(
[in] REFIID reportType,
[in] LOCATION_REPORT_STATUS newStatus
);
Параметры
[in] reportType
REFIID , указывающий идентификатор интерфейса для типа отчета, состояние которого изменилось.
[in] newStatus
Константу из перечисления LOCATION_REPORT_STATUS , которая содержит новое состояние.
Возвращаемое значение
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Это событие предоставляет состояние отчета для новых отчетов. Последние отчеты остаются доступными через ILocation::GetReport, независимо от состояния, сообщаемого этим событием.
Примеры
Ниже приведен пример реализации OnStatusChanged , которая обрабатывает события изменения состояния для отчетов о широте и долготе.
// This is called when the status of a report type changes.
// The LOCATION_REPORT_STATUS enumeration is defined in LocApi.h in the SDK
STDMETHODIMP CLocationEvents::OnStatusChanged(REFIID reportType, LOCATION_REPORT_STATUS status)
{
if (IID_ILatLongReport == reportType)
{
switch (status)
{
case REPORT_NOT_SUPPORTED:
wprintf(L"\nNo devices detected.\n");
break;
case REPORT_ERROR:
wprintf(L"\nReport error.\n");
break;
case REPORT_ACCESS_DENIED:
wprintf(L"\nAccess denied to reports.\n");
break;
case REPORT_INITIALIZING:
wprintf(L"\nReport is initializing.\n");
break;
case REPORT_RUNNING:
wprintf(L"\nRunning.\n");
break;
}
}
else if (IID_ICivicAddressReport == reportType)
{
}
return S_OK;
}
Требования
Минимальная версия клиента | Windows 7 [только классические приложения],Windows 7 |
Минимальная версия сервера | Ни одна версия не поддерживается |
Целевая платформа | Windows |
Header | locationapi.h |
DLL | LocationAPI.dll |