Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows IResultData::DeleteItem和IResultData::DeleteAllrLTItems返回E\u意外 我们有一个基于ATL的Visual C++ MMC SnAPIN问题。我们有一个仅显示在范围窗格中的范围项。选择此项后,将使用一组结果项填充结果窗格_Windows_Visual C++_Mmc - Fatal编程技术网

Windows IResultData::DeleteItem和IResultData::DeleteAllrLTItems返回E\u意外 我们有一个基于ATL的Visual C++ MMC SnAPIN问题。我们有一个仅显示在范围窗格中的范围项。选择此项后,将使用一组结果项填充结果窗格

Windows IResultData::DeleteItem和IResultData::DeleteAllrLTItems返回E\u意外 我们有一个基于ATL的Visual C++ MMC SnAPIN问题。我们有一个仅显示在范围窗格中的范围项。选择此项后,将使用一组结果项填充结果窗格,windows,visual-c++,mmc,Windows,Visual C++,Mmc,当用户选择“删除所有项目”弹出菜单命令时,将调用我们的管理单元代码——首先它执行一些工作,然后继续清除结果视图。我们需要以下行为:用户单击该菜单项,调用自定义代码以执行有用的工作,然后所有项从结果窗格中消失,范围项保持选中状态 我尝试了两种方法来删除所有结果项 变体1-它调用IResultData::DeleteAllRsltItems(),返回E\u UNEXPECTED,并且项目没有被删除-它们只是停留在那里 变体2-它为先前插入结果窗格的每个项目调用IResultData::DeleteI

当用户选择“删除所有项目”弹出菜单命令时,将调用我们的管理单元代码——首先它执行一些工作,然后继续清除结果视图。我们需要以下行为:用户单击该菜单项,调用自定义代码以执行有用的工作,然后所有项从结果窗格中消失,范围项保持选中状态

我尝试了两种方法来删除所有结果项

变体1-它调用
IResultData::DeleteAllRsltItems()
,返回
E\u UNEXPECTED
,并且项目没有被删除-它们只是停留在那里

变体2-它为先前插入结果窗格的每个项目调用
IResultData::DeleteItem()
。同样,每次调用都会返回
E_UNEXPECTED
,并且项目不会被删除


如何从MMC视图中正确删除所有结果项?

我们在OnShow处理程序中执行此操作。所有子项都将按如下方式删除:

CComPtr<IResultData> pResultData;
result = pConsole->QueryInterface(IID_IResultData, (void **)&pResultData);
assert( SUCCEEDED(result) );   
pResultData->DeleteAllRsltItems();
CComPtr pResultData;
结果=pConsole->QueryInterface(IID_IResultData,(void**)和pResultData);
断言(成功(结果));
PRELTDATA->DeleteAllrLTItems();
然后重新添加:

RESULTDATAITEM rdi;
ZeroMemory(&rdi, sizeof(RESULTDATAITEM) );
rdi.mask        = RDI_STR | RDI_IMAGE | RDI_PARAM;        
rdi.nImage      = m_resultChildren[i]->GetBitmapIndex();
rdi.str         = reinterpret_cast< wchar_t* >(MMC_CALLBACK);
rdi.nCol        = 0;
rdi.lParam      = (LPARAM)m_resultChildren[i].get();    
HRESULT result = pResultData->InsertItem( &rdi );
RESULTDATAITEM rdi;
零内存(&rdi,sizeof(RESULTDATAITEM));
rdi.mask=rdi|u STR | rdi|u IMAGE | rdi|u PARAM;
rdi.nImage=m_resultChildren[i]>GetBitmapIndex();
rdi.str=reinterpret\u cast(MMC\u回调);
rdi.nCol=0;
rdi.lParam=(lParam)m_resultChildren[i].get();
HRESULT结果=预设数据->插入项(&rdi);
这样可以删除结果项。我假设代码中还有另一个问题导致了意外的E_