本文整理汇总了C++中CObj::GetObjectType方法的典型用法代码示例。如果您正苦于以下问题:C++ CObj::GetObjectType方法的具体用法?C++ CObj::GetObjectType怎么用?C++ CObj::GetObjectType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CObj
的用法示例。
在下文中一共展示了CObj::GetObjectType方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: OnDblClickObject
void ObjectBarDialog::OnDblClickObject(NMHDR *pNMHDR, LRESULT *pResult)
{
POSITION Pos = objects.GetFirstSelectedItemPosition();
int Item = objects.GetNextSelectedItem(Pos);
if (Item == -1) return;
CObjType* pType;
long ID = objects.GetItemData(Item);
if (ID == -1) // object folder
{
if (folderfilter == -1) //Default folder
{
for(int i=0; i < application->object_folders.size(); i++)
{
if (objects.GetItemText(Item,0) == application->object_folders[i].name)
{
folderfilter=i;
break;
}
}
}
else //return folder
{
folderfilter = -1;
}
Refresh();
return;
}
application->object_types.Lookup(ID, pType);
if (!pType) return;
// If layout editor open..
if (parent.m_tabs.SelectionGet() == 0 && parent.m_tabs.ItemGetCount() == 2)
{
POSITION ObjectPos = layout->objects.GetStartPosition();
CObj* pObject;
long ID = 0;
for (int i = 0; i < layout->objects.GetCount(); i++)
{
layout->objects.GetNextAssoc(ObjectPos, ID, pObject);
CObjType* type = pObject->GetObjectType(application);
if (type->ObjectIdentifier == pType->ObjectIdentifier)
{
OINFO* info = GetOINFO(pType->DLLIndex);
if(info->ETOnNotify)
info->ETOnNotify(pObject->editObject, 1);
return;
}
}
}
// If event sheet editor, see if it has conditions. If so, open Event Wizard
if ((parent.m_tabs.SelectionGet() == 1) && (parent.m_tabs.ItemGetCount() == 2) || parent.m_tabs.ItemGetCount() == 1)
{
bool bUse = false;
for (int i = 0; i < pType->GetTableCount(CONDITION); i++)
{
ACESEntry2* pAce = pType->GetACESEntry(CONDITION, i);
if(pAce == NULL || pAce->aceListName == "")
continue; // Ignore null entries
bUse = true;
}
if (bUse)
{
parent.m_pEventView[0][0]->m_InitialStage = 2;
parent.m_pEventView[0][0]->m_InitialSelect = ID;
parent.m_pEventView[0][0]->m_OldName = pType->GetName();
parent.m_pEventView[0][0]->AddCondition(true);
}
}
}
示例3: 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++)
//.........这里部分代码省略.........