3.31 DM_GetMultiValue
Mit Hilfe dieser Funktion werden Sie in die Lage versetzt, mehrere Attribute von einem oder verschiedenen DM-Objekten in einem Funktionsaufruf zu erfragen. Diese Funktion sollte daher v.a. im Zusammenhang mit dem Verteilten Dialog Manager eingesetzt werden, da sie die Netzwerkbelastung deutlich reduziert.
Die dabei zulässigen Attribute für den jeweiligen Objekttyp entnehmen Sie bitte der „Objektreferenz“.
Hinweis
Bei Verwendung in Funktionen, welche Records als Parameter enthalten, beachten Sie bitte die Hinweise im Kapitel „Behandlung von String-Parametern“ und das Kapitel „Hinweis bei Verwendung von DM-Funktionen“ im Handbuch „C-Schnittstelle - Grundlagen“.
DM_Boolean DML_default DM_EXPORT DM_GetMultiValue
(
DM_MultiValue * values,
DM_UInt count,
DM_ID dialogID,
DM_String pathname,
DM_Options options
)
Parameter
<-> DM_MultiValue *values
Liste von Attributen und Objekten, die erfragt werden sollen. Ist dabei das Element in der Struktur für das Objekt auf 0 gesetzt, wird das im Parameter pathname beschriebene Objekt genommen. Die Liste muss dabei mindestens die im Parameter count angegebene Länge haben.
-> DM_UInt count
Dieser Parameter bezeichnet die Länge des im Parameter values angegebenen Objekt-Attribut-Vektors.
-> DM_ID dialogID
Dieser Parameter beschreibt den Dialog, zu dem die angegebenen Objekte gehören. Muss nur dann angegeben werden, wenn die ID des Objektes dessen Attribute erfragt werden sollen, nicht bekannt ist und daher der Name des Objektes im Parameter pathname angegeben ist.
-> DM_String pathname
Dieser Parameter bezeichnet das Objekt, dessen Attribute erfragt werden sollen. Er ist nur dann belegt, wenn die interne ID des Objekts noch nicht bekannt ist.
-> DM_Options options
Unbenutzt - muss 0 sein.
Rückgabewert
TRUE |
Attribute konnten erfolgreich erfragt werden. |
FALSE |
Mindestens ein Attribut konnte nicht erfragt werden. |
Beispiel
Die nachfolgende C-Funktion soll Koordinaten bei verschiedenen Objekten abfragen.
void DML_default DM_ENTRY Get __3((DM_ID, o1),
(DM_ID, o2),
(DM_ID, o3))
{
DM_MultiValue val[3];
/* Setzen der jeweiligen Objekt-ID */
val[0].object = o1;
val[1].object = o2;
val[2].object = o3;
/* Setzen des jeweiligen Index-Typs */
val[0].index.type = DT_void;
val[1].index.type = DT_void;
val[2].index.type = DT_void;
/* Setzen des jeweiligen Attributes */
val[0].attribute = AT_xleft;
val[1].attribute = AT_width;
val[2].attribute = AT_xright;
DM_GetMultiValue(val, 3, dialogID, (char *)0, 0);
if (val[0].data.type == DT_integer)
printf("%d %d %d\n",
(int) val[0].data.value.integer,
(int) val[1].data.value.integer,
(int) val[2].data.value.integer);
}