本文整理汇总了C++中CComSafeArray::CreateOneDim方法的典型用法代码示例。如果您正苦于以下问题:C++ CComSafeArray::CreateOneDim方法的具体用法?C++ CComSafeArray::CreateOneDim怎么用?C++ CComSafeArray::CreateOneDim使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CComSafeArray
的用法示例。
在下文中一共展示了CComSafeArray::CreateOneDim方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnTvnSelChanged
LRESULT CChildFrame::OnTvnSelChanged(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled)
{
USES_CONVERSION;
HRESULT hr = E_FAIL;
idCtrl, pNMHDR, bHandled;
CTreeViewCtrl ctrlTree = m_wndCatalog;
bHandled = FALSE;
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
ATLASSERT( pNMTreeView );
{
m_pData.m_hTreeItem = pNMTreeView->itemNew.hItem;
m_pData.m_pTreeView = &m_wndCatalog;
}
CTreeItem hItem(pNMTreeView->itemNew.hItem, &m_wndCatalog);
TREE_ITEM_DATA * pCurrSel = NULL;
pCurrSel = (TREE_ITEM_DATA *) ctrlTree.GetItemData(hItem);
if (pCurrSel && STGTY_STREAM == pCurrSel->dwStgType)
{
CComPtr<IStream> spStrm;
hr = pCurrSel->spStgOrStrm->QueryInterface(&spStrm);
if (FAILED(hr)) return hr;
STATSTG st = { 0 };
hr = spStrm->Stat(&st, STATFLAG_NONAME);
if (FAILED(hr)) return hr;
LARGE_INTEGER liBegin = { 0 };
hr = spStrm->Seek(liBegin, STREAM_SEEK_SET, NULL);
BYTE * byBuff = new BYTE[st.cbSize.QuadPart+1];
ZeroMemory(byBuff, (st.cbSize.QuadPart+1)*sizeof(BYTE));
ULONG ulSize = 0;
hr = spStrm->Read(byBuff, st.cbSize.QuadPart, &ulSize);
ATLASSERT(SUCCEEDED(hr));
if(st.cbSize.QuadPart)
{
CComSafeArray data;
data.CreateOneDim(VT_UI1, st.cbSize.QuadPart, (const void *)byBuff);
m_wndHexEdit.SetData(data);
}
else
{
CComVariant data;
m_wndHexEdit.SetData(data);
}
{
m_wndFileDetails.ShowWindow(SW_HIDE);
m_wndHexEdit.ShowWindow(SW_NORMAL);
SetSplitterPane(SPLIT_PANE_RIGHT, m_wndHexEdit);
}
delete [] byBuff;
}
else if (pCurrSel && STGTY_STORAGE == pCurrSel->dwStgType)
{
CComVariant data;
m_wndHexEdit.SetData(data);
m_wndHexEdit.ShowWindow(SW_HIDE);
std::vector<STATSTG_EX> vecFileInfo;
CTreeItem tiChild = hItem.GetChild();
while (FALSE == tiChild.IsNull())
{
TREE_ITEM_DATA * pData = (TREE_ITEM_DATA *)tiChild.GetData();
STATSTG_EX statstgex;
do
{
if (pData->dwStgType == STGTY_STREAM)
{
CComPtr<IStream> spStrm;
hr = pData->spStgOrStrm->QueryInterface(&spStrm);
if (FAILED(hr)) break;
hr = spStrm->Stat(&statstgex, STATFLAG_NONAME);
if (FAILED(hr)) break;
}
else if (pData->dwStgType == STGTY_STORAGE)
{
CComPtr<IStorage> spStg;
hr = pData->spStgOrStrm->QueryInterface(&spStg);
if (FAILED(hr)) break;
hr = spStg->Stat(&statstgex, STATFLAG_NONAME);
if (FAILED(hr)) break;
}
} while(0);
//.........这里部分代码省略.........