


extern pascal void D_BLMAKELIST();
extern pascal void D_BLSETPARMS();
extern pascal unsigned D_BLMODALDIALOG();
extern pascal void D_BLFORGETLISTS();
extern pascal void D_BLSELECT();
extern pascal unsigned D_BLGETSEL();

typedef struct ListRec {
	GrafPortPtr Dialog;	/* pointer to owning dialog's port */
	Rect BoxRect;		/* Rect defining view box */
	Rect ScrRect;		/* Rect defining scroll bar (vertical only) */
	unsigned ListSize;	/* # of items in the list */
	unsigned Height;	/* item height.  Should evenly divide (BoxRect.v1-BR.v2-2)
						 *	for items to fit neatly in box.  Typically (Shaston) 10
						 */
	unsigned DblItem;	/* Dlg Item to hit when DoubleClick on list item. (0 if none) */
	VoidProcPtr DrawProc;
						/* List item draw procedure:
						 * Inputs: ListRecPtr, Item#
						 * 		You should draw the specified item.  The pen will be
						 *		positioned at the upper left corner of the item's
						 *		bounding rect.  Typically you'll do a Move(2,8); Drawstring
						 */
	VoidProcPtr SelProc;		
						/* List item select procedure:
						 * Inputs: ListRecPtr, Item#
						 *		This procedure is called to inform you that a list item
						 *		has been selected.  E.g., you might change a SelText item
						 *		depending on the current selection or (de)activate a button.
						 *		Note: an item is not considered selected until the mouse
						 *		button is released.
						 */
	VoidProcPtr LChangedProc;
						/* List has changed appearance procedure:
						 * Inputs: ListRecPtr, TopItem#
						 * 		The appearance of the list has changed.  If you're doing
						 *		something funky along with the list, do it now.
						 */
	char Reserved[24];	/* Reserved for internal use */
} ListRec, *ListRecPtr;