本文整理汇总了C++中CEntity::GetKeyValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CEntity::GetKeyValue方法的具体用法?C++ CEntity::GetKeyValue怎么用?C++ CEntity::GetKeyValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CEntity
的用法示例。
在下文中一共展示了CEntity::GetKeyValue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnDblclkPropertieslist
void CEntitiesDialog::OnDblclkPropertieslist()
{
// Double-click on the item...Edit it.
mCurrentKey = m_PropertiesList.GetCurSel ();
if (mCurrentKey != LB_ERR)
{
CEntity *Ent = &((*mEntityArray)[mCurrentEntity]);
CString EntityTypeName = Ent->GetClassname ();
CString KeyName;
CString TheValue;
m_PropertiesList.GetText (mCurrentKey, KeyName);
Ent->GetKeyValue (KeyName, TheValue);
TopType eType;
if (EntityTable_GetEntityPropertyType (Level_GetEntityDefs (pDoc->pLevel), EntityTypeName, KeyName, &eType))
{
CDialog *pEditDialog = NULL;
// Create the dialog that's appropriate for this type....
switch (eType)
{
case T_INT :
pEditDialog = new CIntKeyEditDlg (this, KeyName, &TheValue);
break;
case T_FLOAT :
pEditDialog = new CFloatKeyEditDlg (this, KeyName, &TheValue);
break;
case T_COLOR :
pEditDialog = new CColorKeyEditDlg (this, KeyName, &TheValue);
break;
case T_POINT :
pEditDialog = new CPointKeyEditDlg (this, KeyName, &TheValue);
break;
case T_STRING :
pEditDialog = new CKeyEditDlg (this, KeyName, &TheValue);
break;
case T_MODEL :
pEditDialog = new CModelKeyEditDlg (this, Level_GetModelInfo (pDoc->pLevel)->Models, KeyName, &TheValue);
break;
case T_STRUCT :
pEditDialog = new CStructKeyEditDlg (this, *Ent, KeyName, mEntityArray, &TheValue, Level_GetEntityDefs (pDoc->pLevel));
break;
case T_BOOLEAN :
pEditDialog = new CBoolKeyEditDlg (this, KeyName, &TheValue);
break;
case T_PTR :
default :
// bad or unknown type
assert (0);
break;
}
if (pEditDialog != NULL)
{
int ModalResult = pEditDialog->DoModal ();
delete pEditDialog;
if (ModalResult == IDOK)
{
if (MultiEntityFlag)
{
// multiple entities--change this property on all of them
int i;
for (i = 0; i < mEntityArray->GetSize (); ++i)
{
CEntity *pEnt;
pEnt = &(*mEntityArray)[i];
if (pEnt->IsSelected ())
{
pEnt->SetKeyValue (KeyName, TheValue);
}
}
}
else
{
// update
Ent->SetKeyValue (KeyName, TheValue);
}
FillInKeyValuePairs(mCurrentKey);
}
}
}
}
}
示例2: OnDrawItem
void CEntitiesDialog::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpdis)
{
if (nIDCtl != IDC_PROPERTIESLIST)
{
CDialog::OnDrawItem(nIDCtl, lpdis);
return;
}
// don't worry about invalid items (yet)
if (lpdis->itemID == -1)
{
// Don't call CDialog::OnDrawItem with an invalid item...
// it will crash.
// CDialog::OnDrawItem(nIDCtl, lpdis);
return;
}
// we'll start out by just drawing the entire item every time
char KeyText[255];
char ValueText[255];
int rectWidth = lpdis->rcItem.right - lpdis->rcItem.left;
int halfWidth = rectWidth/2;
int maxTextWidth = halfWidth - 2; // 2 pixels on each side...
int leftX = lpdis->rcItem.left + 2;
int rightX = leftX + halfWidth + 2;
RECT rectKey = lpdis->rcItem;
rectKey.right = rightX - 2;
RECT rectValue = lpdis->rcItem;
rectValue.left = rightX - 2;
// opaque inside of the box...
++(rectKey.left);
++(rectKey.top);
// --(rectKey.right);
--(rectKey.bottom);
// ++(rectValue.left);
++(rectValue.top);
--(rectValue.right);
--(rectValue.bottom);
CEntity *pEnt = &((*mEntityArray)[mCurrentEntity]);
CString KeyName, Value;
m_PropertiesList.GetText (lpdis->itemID, KeyName);
pEnt->GetKeyValue (KeyName, Value);
FillTextBuffer (lpdis->hDC, KeyText, KeyName, maxTextWidth);
FillTextBuffer (lpdis->hDC, ValueText, Value, maxTextWidth);
COLORREF OldBkColor;
COLORREF OldTextColor;
// draw the text
if (lpdis->itemState & ODS_SELECTED)
{
// need to do inverted text...
OldTextColor = ::SetTextColor (lpdis->hDC, GetSysColor (COLOR_HIGHLIGHTTEXT));
OldBkColor = ::SetBkColor (lpdis->hDC, GetSysColor (COLOR_HIGHLIGHT));
}
else
{
OldTextColor = ::SetTextColor (lpdis->hDC, GetSysColor (COLOR_WINDOWTEXT));
OldBkColor = ::SetBkColor (lpdis->hDC, GetSysColor (COLOR_WINDOW));
}
int fuOptions = (ETO_CLIPPED | ETO_OPAQUE);
::ExtTextOut (lpdis->hDC, leftX, lpdis->rcItem.top+1, fuOptions, &rectKey, KeyText, strlen (KeyText), NULL);
::ExtTextOut (lpdis->hDC, rightX, lpdis->rcItem.top+1, fuOptions, &rectValue, ValueText, strlen(ValueText), NULL);
::SetTextColor (lpdis->hDC, OldTextColor);
::SetBkColor (lpdis->hDC, OldBkColor);
// and the rectangles
HBRUSH OldBrush = (HBRUSH)(::SelectObject (lpdis->hDC, GetStockObject (NULL_BRUSH)));
::Rectangle (lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, lpdis->rcItem.right, lpdis->rcItem.bottom);
::Rectangle (lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, lpdis->rcItem.left+halfWidth, lpdis->rcItem.bottom);
::SelectObject (lpdis->hDC, OldBrush);
}
示例3: FillInKeyValuePairs
//================================================================================
// This function fills in the key value pairs for the current dialog.
//================================================================================
void CEntitiesDialog::FillInKeyValuePairs(int Selection)
{
// now get the actual entity number from that
int Entity ;
//ASSERT( m_EntityCombo.GetItemData( m_EntityCombo.GetCurSel( ) ) == (DWORD)Entity ) ;
Entity = m_EntityCombo.GetItemData( m_EntityCombo.GetCurSel( ) ) ;
// now go through that entity and add key/value pairs
// to the dialog
m_PropertiesList.ResetContent();
// what do we have here?
if( Entity == LB_ERR )
{
mCurrentKey = LB_ERR;
return;
}
CEntity *Ent = &((*mEntityArray)[Entity]);
EntityPropertiesList const *pProps;
// Get sorted list of published key/value pairs
CString EntityClassname = Ent->GetClassname ();
pProps = EntityTable_GetEntityPropertiesFromName (Level_GetEntityDefs (pDoc->pLevel), EntityClassname, ET_PUBLISHED);
if (pProps != NULL)
{
// Add key/value pairs to the listbox
for (int iProp = 0; iProp < pProps->NumProps; iProp++)
{
EntityProperty const *p;
p = &(pProps->Props[iProp]);
if (p->KeyNum == -1)
{
// a key number of -1 indicates the end of valid keys...
break;
}
// if this key doesn't exist for this entity, then add it
// and its default value...
CString TheVal;
if (!Ent->GetKeyValue (p->pKey, TheVal))
{
Ent->SetKeyValue (p->pKey, p->pValue);
}
if (p->published)
{
// add it to the listbox
m_PropertiesList.AddString (p->pKey);
}
}
EntityTable_ReleaseEntityProperties (pProps);
}
else
{
/*
We know nothing about this entity's type.
We have the key/value pairs, but we don't know what's supposed
to be published. So we'll display "unknown type".
*/
m_PropertiesList.AddString ("Unknown Entity Type");
Selection = LB_ERR;
}
// set the current
m_PropertiesList.SetCurSel (Selection);
}