IInkAnalyzer::BackgroundAnalyze 方法
执行异步墨迹分析。
语法
HRESULT BackgroundAnalyze();
参数
此方法没有任何参数。
返回值
有关返回值的说明,请参阅 类和接口 - 墨迹分析。
备注
调用此方法时, IInkAnalyzer 将在后台线程上执行墨迹分析。
此方法返回 S_FALSE ,在以下情况下不会启动新的后台分析操作。
- IInkAnalyzer 当前正在执行后台分析。
- 脏区域 (请参阅 IInkAnalyzer::GetDirtyRegion 方法) 表示空白区域。
在调用 IInkAnalyzer::Analyze 方法或 IInkAnalyzer::BackgroundAnalyze 方法期间,IInkAnalyzer 分析其脏区域中的墨迹。 但是, IInkAnalyzer 可能会扩展分析操作以包括邻近区域。
此方法将脏区域设置为空区域。
如果在调用 IInkAnalyzer::BackgroundAnalyze 方法后将笔划数据添加到 IInkAnalyzer,IInkAnalyzer 可能会在墨迹分析的协调阶段更新脏区域。
分析模式设置 (请参阅 IInkAnalyzer::GetAnalysisModes 方法) 指定 IInkAnalyzer 如何执行后台分析。 有关墨迹分析的详细信息,请参阅 墨迹分析概述。
此方法在以下情况下返回错误代码。
- 应用程序已在 IInkAnalyzer中AnalysisModes_IntermediateResults设置了 AnalysisModes 值 (请参阅 IInkAnalyzer::SetAnalysisModes 方法) ,并且不处理 _IAnalysisEvents::IntermediateResults 事件。
- 应用程序已清除 IInkAnalyzerAnalysisModes_AutomaticReconciliationAnalysisModes 值 (请参阅 IInkAnalyzer::SetAnalysisModes 方法) ,并且不处理 _IAnalysisEvents::ReadyToReconcile 事件。
- 应用程序不处理 _IAnalysisEvents::Results 事件。
- 应用程序不处理 _IAnalysisEvents::UpdateStrokesCache 事件。
示例
以下示例检查墨迹分析器的脏区域,如果脏区域不为空,则启动后台墨迹分析。
// Check that the ink analyzer's dirty region is not empty.
IAnalysisRegion *pDirtyRegion;
hr = this->m_spIInkAnalyzer->GetDirtyRegion(&pDirtyRegion);
if (SUCCEEDED(hr))
{
VARIANT_BOOL bIsEmpty;
hr = pDirtyRegion->IsEmpty(&bIsEmpty);
if (SUCCEEDED(hr))
{
if (!bIsEmpty)
{
// Insert code that prepares the application for background
// ink analysis here.
// Start background ink analysis. The _IAnalysisEvents::Results
// event signals when background ink analysis is complete.
hr = this->m_spIInkAnalyzer->BackgroundAnalyze();
}
}
}
// Free the memory for the dirty region.
if (pDirtyRegion != NULL)
{
pDirtyRegion->Release();
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP Tablet PC Edition [仅限桌面应用] |
最低受支持的服务器 |
无受支持的版本 |
标头 |
|
DLL |
|