<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Dialog_Control_Language</id>
	<title>Dialog Control Language - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Dialog_Control_Language"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Dialog_Control_Language&amp;action=history"/>
	<updated>2026-10-24T23:45:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Dialog_Control_Language&amp;diff=2511553&amp;oldid=prev</id>
		<title>imported&gt;Jlwoodwa: upd link</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Dialog_Control_Language&amp;diff=2511553&amp;oldid=prev"/>
		<updated>2023-07-16T01:28:21Z</updated>

		<summary type="html">&lt;p&gt;upd link&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Dialog Control Language&amp;#039;&amp;#039;&amp;#039; (DCL) is a high-level description language and interpreter within [[AutoCAD]] for creating simple graphical dialogs. [[AutoLISP]] extensions use it to interact with the user in the AutoCAD environment.&lt;br /&gt;
&lt;br /&gt;
==Features and usage==&lt;br /&gt;
Unlike other major GUI APIs, DCL is not a complete [[GUI]] toolkit for application programming. It is only intended for providing simple dialogs within AutoCAD. It includes basic form widgets such as text boxes, buttons, checkboxes and list boxes. DCL is [[object-oriented]]; it allows re-use through inheritance and composition.&lt;br /&gt;
&lt;br /&gt;
DCL syntax is based on defining and using &amp;#039;tiles&amp;#039;. A &amp;#039;tile&amp;#039; represents a GUI widget such as a text box or a text label. Tiles also represent widgets that hold other widgets, such as columns, radio button groups and the dialogs themselves. DCL provides built-in tiles for all major widgets, and new tiles can be defined through [[inheritance (object-oriented programming)|inheritance]] and [[object composition|composition]] of other tiles.&lt;br /&gt;
&lt;br /&gt;
DCL allows interactions with the dialog at run-time by Lisp code. Certain widgets can have actions associated with them by naming an [[AutoLISP]] function to be run, and values to be passed to it. Unlike other types of GUIs, DCL dialogs cannot be changed substantially at run time. The contents of certain widgets such as text boxes and list boxes can be changed, but widgets cannot be removed from or added to the dialog.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Here is an example DCL file (and accompanying [[AutoLISP]] file) demonstrating the major features of DCL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
name_button : button {&lt;br /&gt;
 label = &amp;quot;Submit name&amp;quot;;&lt;br /&gt;
 action = &amp;quot;(change-name)&amp;quot;; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
hello : dialog {&lt;br /&gt;
 label = &amp;quot;DCL Example&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 : edit_box {&lt;br /&gt;
 label = &amp;quot;Name: &amp;quot;;&lt;br /&gt;
 key = &amp;quot;name&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 : name_button {&lt;br /&gt;
 key = &amp;quot;submit-name&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 : text {&lt;br /&gt;
 key = &amp;quot;greeting&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ok_only;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dialog is created by inheriting from the built-in tile &amp;#039;dialog&amp;#039;. Properties are set on the dialog and other widgets in name/value pairs. Tiles can be placed inside the dialog just by naming them, or by naming them and specifying additional properties. A new tile (&amp;#039;name_button&amp;#039;) is defined for use by naming it and specifying properties for it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=lisp&amp;gt;&lt;br /&gt;
; DCL is saved as &amp;quot;hello.dcl&amp;quot;&lt;br /&gt;
(defun change-name ()&lt;br /&gt;
  (set_tile &amp;quot;greeting&amp;quot; (strcat &amp;quot;Hello, &amp;quot; (get_tile &amp;quot;name&amp;quot;) &amp;quot;!&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
(setq hello-dcl (load_dialog &amp;quot;hello.dcl&amp;quot;))&lt;br /&gt;
(new_dialog &amp;quot;hello&amp;quot; hello-dcl)&lt;br /&gt;
(start_dialog)&lt;br /&gt;
(unload_dialog hello-dcl)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A DCL dialog is instantiated by calling a series of functions in an AutoLisp file. Tiles can call back into [[AutoLISP]] code on certain events, and Lisp can manipulate the contents of tiles while the dialog is running.&lt;br /&gt;
&lt;br /&gt;
==Alternative technologies==&lt;br /&gt;
For creating more general GUIs and other extensions within CAD, AutoDesk provides several other choices. The [[ObjectARX]] API for [[C++]] allows extensions to be built as within Microsoft Visual Studio. [[Visual Basic for Applications|VBA]] allows drag-and-drop programming for [[AutoCAD]] as for [[Microsoft Office]] and other applications.&lt;br /&gt;
&lt;br /&gt;
As of AutoCAD 2007 and later, AutoLISP or Visual-LISP programs can call routines written in Visual Studio .NET (VB or C#). Programmers can now create dialogs in VB or C# that have the full range of controls found in the .NET Forms API and can be called and accessed from Visual-LISP.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.jefferypsanders.com/autolisp_DCL.html Jeffrey P. Sander&amp;#039;s DCL Tutorial]&lt;br /&gt;
* [http://www.afralisp.net/dialog-control-language/ AfraLISP DCL Tutorials]&lt;br /&gt;
* [https://autolisp-exchange.com/Tutorials/MyDialogs.htm AutoLISP-Exchange.com Getting Started with Dcl Dialogs]&lt;br /&gt;
{{AutoCAD_related_articles}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Markup languages]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Jlwoodwa</name></author>
	</entry>
</feed>