3.4 DM_BindCallBacks

Nach dem Laden des Dialogs kann mit Hilfe dieser Funktion dem DM eine Tabelle von Funktionen übergeben werden. Mit Hilfe dieser Tabelle ruft der DM dann die im Dialog angegebenen Funktionen auf.

DM_Boolean DML_default DM_EXPORT DM_BindCallBacks
(
  DM_FuncMap funcmap,
  DM_UInt funccount,
  DM_ID dialogID,
  DM_Options options
)

Parameter

-> DM_FuncMap funcmap

Dieser Parameter ist die Tabelle der Funktionen, die direkt vom DM aus aufgerufen werden können. Der Aufbau dieser Tabelle ist im Kapitel über die Datenstrukturen beschrieben.

-> DM_UInt funccount

Dieser Parameter gibt die Größe der übergebenen Funktionstabelle an.

-> DM_ID dialogID

Dieser Parameter ist die ID des Dialogs, für den diese Funktionstabelle gelten soll. Diese ID haben Sie von der Funktion DM_LoadDialog als Rückgabewert erhalten.

-> DM_Options options

Hier sind folgende Optionen möglich:

Option

Bedeutung

DMF_Silent

Diese Option bedeutet, dass keine Fehlermeldungen an den Benutzer ausgegeben werden sollen.

Ansonsten wird bei Fehlermeldungen zwischen überflüssigen Funktionen und fehlenden Funktionen unterschieden.

DMF_Verbose

Diese Option bedeutet, dass Fehlermeldungen an den Benutzer ausgegeben werden sollen.

Beispiel

Dem DM soll eine Tabelle mit drei Funktionen übergeben werden.

Damit die Funktionstabelle mit den Adressen dieser Funktionen initialisiert werden kann, müssen diese Funktionen vor der Definition der Tabelle zumindest deklariert werden.

Deklaration in der Header-Datei

DM_boolean DML_c DM_ENTRY ReadZip __((DM_String));

char* DML_c DM_ENTRY QueryZip __((DM_String));

DM_boolean DML_c DM_ENTRY WriteFile __((DM_String, DM_String,

       DM_String));

Definition der Tabelle im C-Programm

#define FuncCount (sizeof(FuncMap)/ sizeof(FuncMap[0]))

 

static DM_FuncMap far FuncMap[ ] = {

{ "ReadZip",(DM_EntryFunc) ReadZip},

{ "QueryZip",(DM_EntryFunc) QueryZip},

{ "WriteFile",(DM_EntryFunc) WriteFile},

};

 

/* Install table of application functions */

 

{

 

  if (!DM_BindCallBacks(FuncMap, FuncCount, dialogID, 0))

    DM_TraceMessage ("There are some functions missing.", 0);

  return 0;

}