本文整理汇总了C++中CLayer::GetEveryObject方法的典型用法代码示例。如果您正苦于以下问题:C++ CLayer::GetEveryObject方法的具体用法?C++ CLayer::GetEveryObject怎么用?C++ CLayer::GetEveryObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CLayer
的用法示例。
在下文中一共展示了CLayer::GetEveryObject方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnClickObject
void ObjectBarDialog::OnClickObject(NMHDR *pNMHDR, LRESULT *pResult)
{
POSITION Pos = objects.GetFirstSelectedItemPosition();
int Item = objects.GetNextSelectedItem(Pos);
if (!layout) return;
if (layout->m_ObjectFrameIsLockedTo != 0) // InputLocked()
return;
// Select in layout editor, if it's open
if (parent.m_tabs.SelectionGet() == 0 && parent.m_tabs.ItemGetCount() == 2)
{
parent.layout_editor[0][0]->m_sel.RemoveAll();
// This is intentionally here; clear selection if clicked on whitespace
if(Item == -1)
{
parent.layout_editor[0][0]->Invalidate();
g_PropertyBar->Update(parent.layout_editor[0][0], TYPE_LAYOUT, NULL, layout, NULL, application);
return;
}
// Now we have to wangle in the selected object
int ObjectIdentifier = objects.GetItemData(Item);
if (ObjectIdentifier==-1)
return; //folder
CObj* pObject = 0;
CObjType* pObjectType = 0;
POSITION LayerPos = layout->layers.GetHeadPosition();
// So we have to find all the CObj's with this CObjType in the layout, and add them
// For each layer
while(LayerPos)
{
CLayer* pLayer = layout->layers.GetNext(LayerPos);
// Loop all objects
CObjList Objects;
pLayer->GetEveryObject(Objects, layout);
POSITION ObjectPos = Objects.GetHeadPosition();
for (int i = 0; i < Objects.GetCount(); i++)
{
CObj* pTestObject;
long ID = Objects.GetNext(ObjectPos);
layout->objects.Lookup(ID, pTestObject);
if (pTestObject->GetGlobalID() != -1)
{
CObjType* pTestType = pTestObject->GetObjectType(application);
if (pTestType->ObjectIdentifier == ObjectIdentifier)
{
pObjectType = pTestType;
pObject = pTestObject;
long nKey = pObject->GetInstanceID();
parent.layout_editor[0][0]->m_sel.AddTail(nKey);
}
}
}
}
g_PropertyBar->Update(parent.layout_editor[0][0], TYPE_OBJECT, &parent.layout_editor[0][0]->m_sel, layout, &layout->objects, application); // Show object properties
parent.layout_editor[0][0]->Invalidate();
// While we're here, show animations for object
// Future note: .. to be continued
if(!pObjectType)
return;
int iRoot = -1;
OINFO* oInfo = GetOINFO(pObjectType->DLLIndex);
if (oInfo->ETGetAnimationHandle)
{
oInfo->ETGetAnimationHandle(pObject->editObject, iRoot);
pMainWnd->animator.UpdateAnimations(application, layout, pObjectType, iRoot);
}
}
}
示例2: Refresh
void ObjectBarDialog::Refresh(bool layer_changed)
{
// check for unnecessary refresh
if (layer_changed && !show_only_selected_layer)
return;
// clear all lists
objects.DeleteAllItems();
for (int i = 0; i < large_images.GetImageCount(); i++)
large_images.Remove(0);
for (int i = 0; i < small_images.GetImageCount(); i++)
small_images.Remove(0);
if(folderfilter > -1 && folderfilter >= application->object_folders.size())
folderfilter = -1;
CObj* pObject;
CObjType* pObjectType;
CStringArray List; // Object list
//object folders
if (folderfilter == -1)
{
HBITMAP large_image = (HBITMAP) LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(20150), IMAGE_BITMAP, 32, 32, LR_LOADTRANSPARENT);
HBITMAP small_image = (HBITMAP) LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(20150), IMAGE_BITMAP, 16, 16, LR_LOADTRANSPARENT);
int ImageID = ImageList_Add(large_images.m_hImageList, large_image, NULL);
ImageList_Add(small_images.m_hImageList, small_image, NULL);
DeleteObject(large_image);
DeleteObject(small_image);
for (int i=0; i<application->object_folders.size(); ++i)
{
if(application->object_folders[i].name == "Default")
continue;
int item = objects.InsertItem(objects.GetItemCount(), application->object_folders[i].name, ImageID);
objects.SetItemData(item, (DWORD_PTR)(const char*)"-1");
}
} // -1 is Default, -2 is disabled
else if(folderfilter != -2 && application->object_folders[folderfilter].name != "Default")
{
HBITMAP large_image = (HBITMAP) LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(20150), IMAGE_BITMAP, 32, 32, LR_LOADTRANSPARENT);
HBITMAP small_image = (HBITMAP) LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(20150), IMAGE_BITMAP, 16, 16, LR_LOADTRANSPARENT);
int ImageID = ImageList_Add(large_images.m_hImageList, large_image, NULL);
ImageList_Add(small_images.m_hImageList, small_image, NULL);
DeleteObject(large_image);
DeleteObject(small_image);
int item = objects.InsertItem(0,"...\\"+application->object_folders[folderfilter].name, ImageID);
objects.SetItemData(item, (DWORD_PTR)(const char*)"-1");
}
if (layout)
{
POSITION LayerPos = layout->layers.GetHeadPosition();
// For each layer
while(LayerPos)
{
CLayer* pLayer = layout->layers.GetNext(LayerPos);
if (show_only_selected_layer && pLayer != layout->current_layer)
continue;
if (!show_nonlayout_objects && pLayer->m_layerType == LAYER_NONFRAME)
continue;
// Loop all objects
CObjList Objects;
pLayer->GetEveryObject(Objects, layout);
POSITION ObjectPos = Objects.GetHeadPosition();
for (int i = 0; i < Objects.GetCount(); i++)
{
long ID = Objects.GetNext(ObjectPos);
layout->objects.Lookup(ID, pObject);
if (pObject->GetGlobalID() != -1)
{
pObjectType = pObject->GetObjectType(application);
// Failed/invalid object type, for some reason
if(!pObjectType)
continue;
//folder filtering
if(folderfilter ==-1 && pObjectType->GetFolder() != "Default")
continue;
else if(folderfilter > -1 && pObjectType->GetFolder()!=application->object_folders[folderfilter].name)
continue;
bool bAdd = true;
for (int j = 0; j < List.GetSize(); j++)
//.........这里部分代码省略.........