LL_­CMND_­EDIT_­USEROBJ

Aufgabe:

Fordert das Programm auf, einen objektspezifischen Dialog zu starten, über den der Benutzer die zugehörigen Darstellungsparameter eingeben und ändern kann.

Aktivierung:

LlDefineVariableExt(hJob, <Name>, <Inhalt>, LL_­DRAWING_­USEROBJ_­DLG,
   <Parameter>);

Parameter:

lParam zeigt auf eine scLlEditUserObj-Struktur:

_­nSize: Größe der Struktur, sizeof(scLlEditUserObj)

_­lpszName: Name der Variablen, die dem Objekt zugeordnet ist

_­lPara: lPara der Variablen, die dem Objekt zugeordnet ist (LL_­DRAWING_­USEROBJ oder LL_­DRAWING_­USEROBJ_­DLG). Entspricht dem 4. Parameter des LlDefineVariableExt()-Aufrufs.

_­lpPtr: lpPtr der Variablen, die dem Objekt zugeordnet ist. Entspricht dem 5. Parameter des LlDefineVariableExt()-Aufrufs.

_­hPara: Handle-Inhalt der Variablen, die dem Objekt zugeordnet ist. Dieser Wert ist nur gültig, wenn die Variable über LlDefineVariableExtHandle() definiert wurde, ansonsten ist der _­lpszContents-Wert gültig.

_­bIsotropic: TRUE: Das Objekt soll unverzerrt gezeichnet werden
FALSE: Die Zeichnung soll in das Rechteck optimal eingepasst werden

_­hWnd: Fenster-Handle des Dialogs. Dieses sollte als Parent-Handle Ihres Dialogs genommen werden.

_­lpszParameters: Zeiger auf einen Puffer mit der maximalen Größe _nParaBufSize.

_­nParaBufSize: Größe des internen Puffers.

Rückgabewert (_lResult):

0

Hinweise:

Dieser Callback kommt nur bei Objekten mit dem Variablentyp LL_­DRAWING_­USEROBJ_­DLG!

In diesem Callback darf keine List & Label-Funktion aufgerufen werden, die Ausgaben zur Folge hat (LlPrint(), etc.)! Funktionen wie LlPrintGetCurrentPage(), LlPrintGetOption() oder LlPrintEnableObject() sind erlaubt.

Siehe: Hinweise zur Benutzung von GDI-Objekten.

Die Bearbeitung des _­bIsotropic-Flags ist optional, da dieses schon vom aufrufenden Dialog eingestellt werden kann. Wenn Sie dieses Flag in der Struktur verändern, wird die Veränderung von List & Label übernommen.

_­lpszParameters zeigt auf einen String, in dem die beim letzten Aufruf des Dialogs eingegebenen Werte stehen. Dieser Puffer ist 1024+1 Zeichen groß, so dass ein Parameterstring, der von Ihrem Dialog erstellt wird, in diesen Puffer geschrieben werden kann, wenn er kürzer ist als der Wert in _­nParaBufSize. Ansonsten müssen Sie diesen Zeiger mit einem Zeiger auf Ihre gewünschten Daten überschreiben. Die Problematik eines längeren Parameterstrings ist, dass dieser von List & Label nicht freigegeben werden kann, falls es ein allozierter Speicherbereich ist.

Die in der Parameter-Zeichenkette erlaubten Zeichen sind alle druckbaren Zeichen, also Zeichen mit Codes >= 32 (' ').

Beispiel:

case LL_­CMND_­EDIT_­USEROBJ:
   pSCE = (PSCLLEDITUSEROBJ)pSC->_­lParam;
  
   lpszNewParas = MyDialog(pSCE->_­hWnd,...,);
  
   if (_tcslen(lpszNewParams) < pSCE->_­lpszParameters)
      _tcscpy(pSCE->_­lpszParameters, lpszNewParas);
    else
      pSCE->_­lpszParameters = lpszNewParas;
   break;