Aufgabe:
Fordert das Programm auf, einen objektspezifischen Dialog zu starten, über den der Benutzer die zugehörigen Darstellungsparameter eingeben und ändern kann.
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;