**********************************************************
History.txt
ddoc Print and Preview Revision History
Version 1.9e, Oct. 7, 2003
Copyright 1995-2003,
Don Dickinson,
All rights reserved.
http://dickinson.basicguru.com
don@greatwebdivide.com
**********************************************************
IMPORTANT NOTE ABOUT v1.9d and v1.9e
**********************************************************
It is my intent for this to be the last of the 1.x
versions of ddoc. i will continue to support it for
at least a year after i release ddoc v2.0. v2.0 will
be very compatible with this version (though the dll name,
exe name and a few call names may change). I will also
release bug fixes if there are significant bugs reported.
About this document
**********************************************************
This document contains 3 things ...
1. An idea of the features I want to add to the
next releases.
2. A list of known issues to be resolved in future
releases.
3. A history of revisions made to ddoc
Planned for future release
**********************************************************
The items below are an example of what MAY appear in
ddoc in the future. I am open to input from YOU about
what features YOU would like to see. Please don't take
the list below as a promise of any kind. These are things
that I am considering ...
>> A Grabber hand that allows moving the page around.
>> Printing bitmaps from hDC or resource file.
>> New command to allow positioning of the window in
a position other than maximized.
>> XML data format instead of proprietary binary.
>> "Hot Link" spots on the screen that can ....
1. Link to another page in the report
2. Shell out to another application
>> ENCRYPTION of all text in document against the given
password.
>> RLE COMPRESSION of embedded bitmaps.
>> PROGRAMMER DEFINED ZOOM LEVELS
>> TABLES for easy data output
dpSetTableSpecs iTable, iColumn, iAlign, zFont, etc.
dpColumnText
dpRowText
Basically, you define what your table's columns are
going to look like and assign that definition an
ID code. For example, you can tell the computer
that Table1, Column1 is right-justified at 2" over,
the heading is printed in bold, the regular text is
printed italic, etc. Then define the rest of the
columns. Once your table is defined, you need only
call dpColumnText and reference the table, column,
and how far down on the page to print - the engine
will take care of the X coordinate, alignment,
and font specs. OR, you can call dpRowText and pass
it a delimited string containing ALL of the text for
all columns in the current row. For example,
dpRowText iTable, sngCurrentYPosition, "~", "First~Last~Phone"
>> ASCII TEXT TEMPLATES
This feature will enable ddoc to read a special ascii
format of it's file. You will also be able to specify
a file to be used as a "template" for every page.
This will act as a macro - inserting items out of an
ascii file directly into ddoc. For example, if you
always put your company's name at the bottom of the page,
you can create an ascii file of commands, like below ...
_DEFINE_MACRO SetFontBold
_FONT BOLD 10,RED,Times New Roman
_END_MACRO
_DO_MACRO SetFontBold
_TEXT 7,10.5,RIGHT:My Company Name
_LINEFEED .2
_PARAGRAPH CURRENTX,CURRENTY,WIDTH,LEADING
This is a paragraph
_END_PARAGRAPH
Save this 9 line file as mytemp.txt
Now call dpInsertTemplate "mytemp.txt" and ddoc
will open the file and insert your company name
in the requested font right into your document.
>> HTML support
I will begin by adding basic HTML tag handling such as
<P>,<B>,<I>, etc. and add functionality. The beta
of this call works sort of like dpWrapText does; formatting
paragraphs of html code instead of normal text.
Eventually I would like to support tables. I will
probably never support the .gif graphics nor
will I support internet communications (hyperlinks)
or frames. I am considering including the <A> tag
to define hot-spots that link to other pages
in the document.
>> INSERT a page. It may be helpful for the programmer
to be able to start a new page, but put it in a
different spot in the document. For example, I have
a piece of software that generates letters reminding
people that they have an invoice due. It would be
nice to start the document with a summary sheet.
Unfortunately, I don't know the summary information
until after the letters have been generated. Instead
of leaving the summary at the end, it might be nice
to have a dpMovePage call that allows me to move, say,
the 9th page to the 1st, etc.
>> RTF/ASCII/WORD file conversion. Ascii might be able
to dump out dpTabText only to a csv file (kind of
data export).
>> Ability to embed bitmaps from a bitmap handle
or resource file.
Known Issues
**********************************************************
>> ddoc does supports only using True Type fonts. Don't
use bitmap fonts like MS Sans Serif, etc or you may
have problems zooming in on pages. This is not a bug,
I just plain don't support anything other than True Type
nor will I likely build in support for anything else.
>> ddoc can cause the PB-CC version 2 Debugger to hang
on the dpEndDoc call. I haven't figured out if
this is caused by a bug in PB-CC's debugger or
ddoc - it is a very difficult thing to track down,
but I am working on it.
>> If you have a full-screen console or dos app running
and you alt-tab or alt-enter out of it, the
viewer doesn't redraw itself. You need to minimize
and then restore the viewer to correct this.
>> Sometimes the mouse cursor will remain an hourglass even
though it should be an arrow. This is not a bug in
ddoc, but a problem with certain video cards when
running with hardware acceleration. Mine that does this
is an ATI Xpert - 8mb pci. I have to set this video card
to have only one "notch" of acceleration to correct
the problem.
Version 1.9e Released Update 10-7-2003
**********************************************************
>> FEATURE
dpRoundRect function added. It allows drawing a
rectangle with rounded corners.
>> DOCUMENTATION FIX
dpEndDocInst has a wrong heading in the function
reference
>> BEHAVIOR CHANGE
The installer now asks if you want to overwrite
the ddoc.exe and ddoc32.dll in the windows system
directory.
>> BUG
The bookmark text (if changed from the default) did
not appear correctly on self-extracting documents.
>> BUG
1.9d enabled hot keys. But, I was not checking to see
if the button for the hot key was enabled when the
hot key was pressed. This meant that the Ctrl-E,
Ctrl-S, and Ctrl-F (email, save, and fax) keys worked
even if those buttons were not turned on. This has
been fixed.
>> BUG
Fixed problem with programmer defined screen text
that wasn't accurately displayed in a self-extracting
document.
>> BUG
Fixed an smtp email mime encoding bug by replacing
the mime encoder with newer code from pb's web site.
>> BUG
Fixed emailto field problem in smtp emails
>> BUG
Fixed date formatting problem with smtp emails.
>> BEHAVIOR CHANGE
The bookmark dropdown list now displays the item
corresponding to the current page instead of defaulting
to the first item in the list.
Version 1.9d Released update 9-8-2003
**********************************************************
>> SPECIAL THANKS
Special thanks to ddoc user Michael Mattias for
reporting a bunch of the documentation bugs below.
Also thanks to others (you know who you are) for
misc documentation fixes. More thanks to Joseph Knight
for help trouble-shooting the dpWrapText problem.
>> DOCUMENTATION FIX
Numerous small documentation errors.
>> DOCUMENTATION FIX
The definition of dpGetFileName was missing. It has
been added.
>> BUG
Memory leak with dpWrapText where a font handle was
not being properly freed. This lead to some strange
problems with certain printer drivers if you do a
lot of dpWrapText calls.
>> PERFORMANCE BOOST
dpWrapText is about a billion times faster now
(really, a billion).
>> BUG
dpTextWidth may not have always returned the correct
width (depending on font usage). This has been fixed.
>> BEHAVIOR CHANGE
I have brought back the warning message box that
tells you if a default printer is not installed on
the machine. ddoc requires the default printer for
all text wrap and width features.
>> RESOURCE FILE UPDATE
changed the version so that it reflects the minor
version ... e.g. 1,9,4,0 instead of 1,9,0,0
in both ddoc32.dll and ddoc.exe
>> NEW FUNCTION
dpEndDocInst returns the process id as returned
by the last shell command in dpEndDoc. It must be
called directly after dpEndDoc. If you have a
multi-threaded application you should enclose your
dpEndDoc and dpEndDocInst inside a critical section
or mutex so the pid returned is accurate. since ddoc
uses the pb shell function to execute ddoc.exe, the
return value of this function is that of the shell
function (see pb documentation for more information).
>> BEHAVIOR CHANGE
PgDown moves to the next page
PgUp moves to the previous page
Ctrl-p prints the document
End moves to the last page
Home moves to the first page
Ctrl-q exits
Ctrl-e emails
Ctrl-f faxes
Ctrl-g displays the go to page box
>> NEW FEATURE
ddoc now has jpg support. it requires you distribute
a new file (ddoc_jpg.dll) with your app. ddoc.exe
doesn't need this file, but ddoc32.dll needs it
only if you add a jpg to the file. only the
dpAddGraphic/dpDrawGraphic command supports jpgs.
dpEmbedGraphic and dpGraphic do not. Note that
this dll was written by me in delphi 6. source
code is available upon request, but not included
with the distribution.
>> BUG
if you issued the dpChangeWords command with
%DDOC_WORD_DOCINDEX, it was effectively ignored.
This behavior has been fixed.
Version 1.9c Released Update 2-14-2002
**********************************************************
>> FEATURE
dpAttachExt allows you to change the file
extension for ddoc email attachments. This is useful
because .exe files are often blocked. You can
change the extension to .ex_ for example.
>> FEATURE
dpSetScreenOptions has been added to allow the
programmer to specify a starting position
(non-maximized) for the preview screen.
>> FEATURE
Support for emf (enhanced metafiles) has been added
to the dpGraphic, dpAddGraphic, dpDrawGraphic, and
dpEmbedGraphic commands.
>> C/C++ is now supported. A file called ddoc32.c can
be included in MS VC and C++ Builder projects to add
ddoc support. No samples are available yet. Please
see the C notes section of the documentation.
>> FEATURE
dpSpecialText allows the programmer to print text
that is has tokens replaced before display. These
tokens are currently: ##pageno##, ##pagecount##.
>> BUG
ddoc was not deleting temp files (when DDOC_END_DELETE
was specified). It is now.
>> BUG
dpWrapText would incorrectly wrap text when passed
a buffer pointer that was greater than 32767 bytes.
It can now handled a buffer containing 2gb of data.
Version 1.9b Maintenance upgrade 11-13-2002
**********************************************************
>> DOCUMENTATION FIX
Fixed various documentation typo's.
>> BUG FIX
If a printer has a duplexer installed and the duplexer
is an option in the printer setup, the printer always
printed ddoc documents duplexed.
>> BEHAVIOR CHANGE
%PD_HIDEPRINTTOFILE constant was specified in the print
dialog. This caused the Print To File selection to be
hidden. I have removed this flag so the option will
show up.
>> BUG FIX
Fixed a bug in the smapiSendMail function that caused
attachments to be incorrectly enumerated.
>> BUG FIX
Wrapped text should be rtrimmed, not trimmed. Because
I was trimming you could not indent fixed width fonts
with spaces. This has been changed.
Version 1.9a Released Update 9-20-2002
**********************************************************
>> BUG FIX
Version 1.9 had a bug that caused ddoc to delete a file
that it opened if that file was of an invalid format.
This has been fixed.
Version 1.9 Released Update 9-10-2002
**********************************************************
>> FEATURE
dpPageOffset has been added. This command allows you
to adjust the internal page numbering (dpPageNo)
by specifying the page number of the first page.
This allows, for example, you to start the document at
page #50 by calling:
dpPageOffset hPrev, 49
Values less than 1 are ignored.
>> ENHANCEMENT
A new version of ddocml.ini is included. Thanks to
Tom Dandrea for contributing this.
>> FEATURE
dpPaperSize can be used to specify a custom paper size.
In order for this to work, %DDOC_PAPER_CUSTOM must
be passed in the dpStartDoc or dpNextpage call. If
this constant is not specified in the iPaper parameter
of these calls, then dpPaperSize will be ignored.
Maximum paper size is 22" by 22".
>> DOCUMENTATION BUG
dpFont section was in there two times. No longer.
>> DOCUMENTATION BUG
dpWrapContinue was not hyperlinked and had an
improper title in the documentation. Fixed.
>> DOCUMENTATION BUG
Various spelling errors corrected.
>> BUG FIX
Version 1.8x of the source code was hard to compile
because I was including stock (odler) versions of the
api includes. ddoc now has its own version of the
winapi files.
>> BEHAVIOR CHANGE
If you are using dpSetPassword, be sure to read this.
A password protected document will no longer prompt
for a password if it is coming directly from a
call to dpEndDoc. Only documnts that are saved and
opened up *later* will prompt for a password. Documents
that are emailed will prompt for a password if one is
set.If this causes a problem for anyone let me know.
I had requests for this and it makes sense to me.
>> FEATURE
ddoc32.dll and ddoc.exe now include versioning information
in an embedded resource file. Thanks to Michael Mattias
for his help with this.
>> WORKAROUND
On some machines, the "CreateCompatibleBitmap" call
used to make and off-screen drawing surface will
fail. This seems to be caused when the user is set
to 24 or 32 bit video and the video driver is
"flakey". Sometimes updating the video driver fixes
the problem, sometimes not. The workaround is to create
a black and white off-screen bitmap. This is compatible
with all drawing surfaces and can display everything
black and white when the CreateCompatibleBitmap
call fails. If you see a screen in black and white and
it should have color, then try decreasing the video
depth to 16-bit color. This should fix the problem.
In the past that black and white screen would have been
just white (blank), now at least something will print
albeit only in black.
>> BUG FIX
ddoc was inadvertantly writing to "e:\ddoc.log" during
certain operations. While harmless, this has been
removed. This was occurring in 1.8b thru 1.8d and was
a side-effect of debugging the network printer
enumeration problem.
Version 1.8d Maintenance upgrade 6-30-2002
**********************************************************
>> BUG FIX
Memory leak fixed in print routine. The saved devmode
structure was never being freed.
>> BUG FIX / FEATURE
There was a bug in dpNextLabel that changed the page
size back to letter size after the first page. I fixed
this. In the process I added the %DDOC_SAME_AS_FIRST
constant (= -2) that can be used in dpNextPage
in any of the bin, paper size, or orientation fields
that tells the engine the next page should be the
same as the first page. Note that if you're printing
labels, all internal dpNextPage calls by the label
engine will set the page size, orientation, and bin
to be the same as the first page.
>> ENHANCEMENT
Added critical sections to improve multi-threaded
handling within ddoc32.dll
Version 1.8c Maintenance upgrade 3.27.2002
**********************************************************
>> BUG FIX
In some operating systems the zoom on right click
was not working. The zoom was always 100% unless
you clicked on the zoom level in the combo box.
This has been fixed in ddoc.exe
Version 1.8b Maintenance upgrade 12.27.2001
**********************************************************
>> BUG FIX
Under some o/s's ddoc's dpGetPrinter did not return
networked printers - just local ones. This should
be fixed.
>> BUG FIX
When using ddoc from CGI, the user the web server runs
as may not have a default printer defined. ddoc needed
to have a default printer defined in order to print
correctly and to wrap text. I removed this requirement.
In the event a default printer is not defined, ddoc
will choose the first available printer and use that
for it's information context. If no printers are
defined ddoc will still fail.
>> BEHAVIOR CHANGE
ddoc32.dll used to shell to the ddoc.exe file in
curdir$. Now it shells to the ddoc.exe in the
the directory that holds the program calling
the dll. This means that for sure, every time, etc
you distribute ddoc, you should put it in your
program's directory (both ddoc32.dll and ddoc.exe)
>> NOTE
This was never a public update. I sent it to people
needed the fixes.
Version 1.8a Released Update 10.31.2001
**********************************************************
>> BUG FIX
I compiled with a bad version of RAS32.INC that ended
up making ddoc 1.8 dependent on RAS being installed.
This dependency has been removed.
Version 1.8 Released Update 10.12.2001
**********************************************************
>> BUG FIX
Copies issue on print dialog - previous versions
didn't correctly interpret the user indicated number
of copies to print.
>> BUG FIX
The automatic calling of dpNextPage withing label
printing functions was not correctly restoring
the paper size. It will now be assumed
that the paper size specified in dpStartDoc
(or over-ridden by the user in the dialog) will
be used to initialize each automatic dpNewPage
call within the label engine. This means that
it will not be possible to print the first page
in a different paper size, bin, or orientation
than the labels. Internally, it is setting the
paper, orientation, and bin to %DDOC_SYSTEM_DEFAULT
(see below).
>> BEHAVIOR CHANGE
Old versions of ddoc did not correctly initialize the
print common dialog with orientation/bin/papersize
information. It printed the way the programmer
specified, but didn't reflect this in the common dlg.
It shows these parameters correctly now.
In the past ddoc would force the printer to print with
the programmer's selected orienation and bin. Now
ddoc introduces a new constant that may be passed
in the iPaper, iOrientation, and iBin parameters
of dpStartDoc and dpNewPage. It is %DDOC_SYSTEM_DEFAULT.
If this parameter is passed, then the page will
use the paper/orientation/bin selected by the user
in the print dialog. If you print without a dialog,
the system will use the default printer setup.
The programmer can still specify the page size,
orientation, and bin for any page s/he wishes. But,
any page with the %DDOC_SYSTEM_DEFAULT parameter
will print in the paper/orientation/bin of
whatever was in the print dialog.
>> DOCUMENTATION FIX
dpSpecifyPrinter now documented correctly.
>> INCLUDE FILE FIX
Constant ommission %DDOC_END_SPECIFY_PRINTER = 64
was omitted from header files. Now it's there.
>> INCLUDE FILE FIX
dpSpecifyPrinter was incorrectly declared as a Sub
instead of a function in previous versions.
>> NEW FUNCTION
dpPrinterCopies command tells ddoc to print the
specified number of copies automatically
*if* dpSpecifyPrinter is called or
DDOC_END_PRINT_NODIALOG is included in dpEndDoc.
>> NEW FUNCTION
dpDuplex command allows the printer forces the printer
to duplex. The user cannot override this behavior
manually, whatever is selected by the programmer is
what happens. This works just like the paper
orientation - it is enforced by ddoc when printing.
The printer must have a duplex tray installed and
configured in order for this to work. This should be
considered beta as well as I have only been able
to test it on a Laserjet 4000ne.
>> NEW FUNCTION
dpFontSpacing command allows programmer to control
how much space is between each letter.
>> NEW FUNCTION
dpWrapContinue command implemented to allow
easier use of paragraph printing. Call this
after dpWrapText until it returns False. It buffers
the text to print internally for you.
>> NEW FUNCTION
dpEllipse - allows printing of circles and ellipses.
>> NEW FUNCTION
dpArc - allows printing of an arc
>> NEW FUNCTION
dpPie - allows printing of a slice of an ellipse
Version 1.7a Maintenance upgrade 3.20.2001
**********************************************************
>> Incorrect source distributed with ddoc v1.7 Now the
correct source code is bundled.
>> Switched from using an old version of Wise install
to using INNO Setup.
>> dpGetMinor/MajorVersion did not report the correct
ddoc version information.
Version 1.7 Released Upgrade 1.25.2001
**********************************************************
>> New sets of calls to enumerate available printers, and
select a printer for output (if just printing)
>> Improved palette support so that graphics with multiple
colors print and display better than before.
>> The new dpStretchMode call alls you to specify that
graphic calls stretch the bitmaps to fit the rectangle
specified instead of being shrunk proportionally to fit
the rectangle.
Version 1.6a Maintenance upgrade 9.2.99
**********************************************************
>> ddoc.exe became dependent upon RAS being installed
(the file ras32api.dll, specifically). This was not
intentional - it was a side effect of my including
some ras dialer calls in the SMTP code added with
version 1.6. I have now changed ddoc so that it
dynamically loads ras32api.dll - no run-time error
will occur if RAS isn't installed.
Version 1.6 Released Upgrade 8.5.99
**********************************************************
>> New bitmap commands - dpAddGraphic/dpDrawGraphic allow
you to add a bitmap to a ddoc file once and print
it as many times as you wish, on as many different
pages as you wish.
>> New constant for the Style parameter of dpFont allows
the programmer to specify that text drawn following
this call will be vertical aligned with respect to the
text's baseline instead of the upper left corner of
the string. This, in conjunction with dpTextWidth will
allow the programmer to mix fonts on a single line. You
can calculate where text that printed left off and start
printing in a new font with the assurance that the two
lines of text share the same baseline. The constant is
DDOC_FONTBASELINE
>> SMTP email is now available as a replacement for
MAPI. Turn it on in the Options parameter of dpStartDoc
with the new DDOC_ALLOWSMTP flag. Note: you can't enable
both MAPI and SMTP - just pick one. The smtp email
functions are actually part of ddoc32.dll. ddoc.exe calls
the email functions in ddoc32.dll. This means that
when you distribute ddoc, you MUST distribute the 32-bit
dll if you want SMTP support even if you are only using
a 16-bit programming language. The first time your user
tries to email a document, a "setup" screen will prompt
them for their email server, port, and reply address.
This information is then stored in the registry for
future reference. They can go back and change this
information by clicking the "setup" button on the
email dialog screen. The ddoc file or .exe file will
be attached to the email as a MIME encoded file. Also,
the setup screen lets the user configure a RAS dialer
to dial up their favorite internet connection if they're
not already connected. It will disconnect when done. Please
note that I consider this function BETA because I'm the
only one that's tested it. If you have any problems
please contact me right away. Thanks!
>> dpTextWidth command returns the width of text in the
documents unit of measure (either inches or cm). Note
that use of this function requires that you have a
printer installed on your system. If there is no
default printer, an IC can't be created. The IC is used
to determine the width of the text. Also note that
because of the resolution differences between output
devices, the actual width on the screen and on a printer
other than the default might vary. When you request
the width of text, I have to return the width with
respect to something - I choose the default printer
hoping for the best results.
>> The Copies selection the print dialog was being ignored.
This is now fixed.
>> dpTabText didn't work properly when DDOC_CM was choosen
instead of DDOC_INCH. The text used to be chopped off.
This has been fixed.
>> Fonts now properly default to 10 Point, Arial, Black
at the beginning of each new page.
>> dpClipText (and dpTabText if the W parameter was
specified) didn't take the printer's margin into
account when printing. This caused text printed
with these commands to shift down and to the right on
the page. This has been corrected.
Version 1.5 Released Upgrade 5.7.99
**********************************************************
>> dpSetTabs - sets position and alignment of
tab stops.
dpTabText - prints columns text delimited by
the tab character (ascii 9). Respects alignment
and positions set by dpSetTabs.
>> dpClipText didn't always clip correctly. This has
been fixed.
Version 1.4a Maintenance Upgrade 2.25.99
**********************************************************
>> Fixed problem with using CM as the unit of measure.
Version 1.4 Released Upgrade 1.4.99
**********************************************************
>> ddoc used to be limited to 4000 pages. It is now limited
only by the memory on your computer (actually limited by
the size of a long integer - 2 billion + pages).
>> If you run ddoc.exe without a command line parameter, it now
prompts you for a .ddc file to open. If you select a valid
file, it will be displayed in a viewer screen.
>> Changed dpText and dpAngleText to _not_ trim off
spaces from text passed to them. Before if you passed,
" Text" or "Text" to either, they would print the
same. Now " Text" prints over farther on the
screen. Feature added for those that print with
a mono-spaced font (courier, etc).
>> Fixed bug in the mailing label engine that caused
the first label of the second page to be lost.
>> New option for 32-bit dll users only - DDOC_VIEWBUILD option
can be passed (bit-wise) in the iOptions parameter or
dpStartDoc. This tells ddoc to display the preview screen
while the preview document is still being built. Instead
of the user having to wait for dpEndDoc to start seeing
their document on the screen, each page can be viewed
immediately after it is built.
>> dpClipText routine allows user to specify the maximum
width a line of text can take up. Allows the programmer
to tell ddoc to "Print this line of text, but cut
off everything that's wider than X inches."
>> MAPI FAX integration - "MS At Work Fax" that comes with Windows 9x.
Specify a list of recipients. Fax with or without a send
dialog box. THIS FEATURE is considered BETA - your input will
be greatly valued. See dpSetFaxOptions command.
>> ENHANCED EMAIL capabilities.
Specify a list of recipients. EMail with or without a send
dialog box. THIS FEATURE is considered BETA - your input will
be greatly valued. See dpSetEMailOptions Command.
>> New dpEndDoc parameters ...
%DDOC_END_PRINT_NODIALOG
%DDOC_END_FAX
%DDOC_END_EMAIL
And additional functions to specify recipients of
fax or email ...
dpSetMailOptions, dpSetFaxOptions
>> NEW COMMAND LINE PARAMETERS
Currently there are only two:
/P Prints with dialog
/PA Prints to default printer without dialog
I am adding the following:
/F Faxes
/E Emails
Whether the dialog is displayed for each of these depends
on how or if the user called dpSetMailOptions or dpSetFaxOptions
>> Changed the way the viewer uses memory bitmaps to
decrease the amount of memory needed by the viewer.
>> Added the %DDOC_SCALETEXT and %DDOC_FASTTEXT options
to the dpStartDoc call (iOptions bitwise parameter).
These effect the way that ddoc zooms in and out.
%DDOC_FASTTEXT is the default.
%DDOC_FASTTEXT means that all text is rendered no
matter what the zoom scale is. This means that
text widths can be distorted at some zoom levels
because of restrictions in screen resolution. This
leads to faster zooming, but widths of text can
be inconsistent.
%DDOC_SCALETEXT means that text is StretchBlted at
zoom levels < 100%. This means that text widths will
be accurate at all zoom levels, but the quality of
the text will go down and the zooming happens slower.
** I only recommend using %DDOC_SCALETEXT if you have
lots of wrapped text or grids on the screen that
will look funny if the default is used.
>> Save feature built-in. This allows the user to
save a self-extracting version of the document by
clicking the Save button - IF the save button
has been turned on in the iOptions parameter
of dpStartDoc. Also, you may save out .ddc files
that are the documents without self-extracting
code. These documents may be called up by
passing their name to ddoc on the command line.
>> ddoc automatically registers the extension .ddc
in the registry if it's not already there. If it's
already there and used by another program, please
let me know as I don't want to conflict with other
programs. If you want to know if the .ddc extension
is registered, run ddoc with the command line
/SHOWREG. If another program has the .ddc extension
registered and you want to overwrite it so it
references ddoc, pass ddoc.exe the command line
/INSTALL and it will register the .ddc extension,
and /INSTALLVERBOSE will register the .ddc extension and
display a message box telling the success of the call.
Version 1.3a Released Upgrade 10.23.98
**********************************************************
>> Fixed problem that prevented two viewers to be able
to be displayed from the same program at the same
time under certain conditions.
Version 1.3 Released Upgrade 10.7.98
**********************************************************
>> MAPI Email capability is now built in. (see dpStartDoc
Options% parameter)
>> dpEmbedGraphic Function allows embedded graphics. You
should use this instead of dpGraphic if you have the
MAPI Email turned on or you're not deleting the
temp files when done (saving to call up later)
>> Fixed possible Printer Driver GPF because of
insufficent DEVMODE structure space.
>> Changed the algorithm for zooming out less than 100%
This means a little slower, but more accurate
depiction of font widths when zooming out. Zooming
in 100% and greater is un-changed.
Version 1.2 Maintenance Upgrade 9.17.98
**********************************************************
>> Support for user defined tool tips and menu text.
Specifically added for international users. See then
dpChangeWords call.
>> Self-extracting version of ddoc.
This feature will allow the programmer to create a
document embedded in a viewer. The viewer will add
about 80K to the document. This file can be sent
to and viewed by someone who doesn't have ddoc.
Version 1.1 Initial Release 6.20.98
**********************************************************
>> Password protection for the documents.
>> Added icon to viewer exe.
>> Sample files done for all supported languages.
Testing of samples complete.
>> Installation program complete and tested.
>> PB/CC console compiler demo complete.
Beta 2 6.1.98
**********************************************************
>> Stack problem with pbdll 16-bit identified
If you are developing with a 16-bit version
of pbdll, you MUST use the $STACK metastatement
to increase the stack size. I suggest putting
it up near the maximum ($STACK 32000). The
default stack size is only 2K. If you don't
increase the stack size, the dpWrapText call
will GPF with a stack fault.
>> Header files complete for vb 3,4,5,6, delphi 1,2,3,
pbcc, pbdll 1,2,5
>> Documentation complete.
Beta 1 5.1.98
**********************************************************
>> VB3 Sample GPF fixed.
>> Header files for vb and delphi are complete.
>> Text wrapping and mailing label features added
Alpha 1 4.1.98
**********************************************************
>> 32-bit and 16-bit dll's working with VB3 and 5
>> Basic text and graphic functions working
.eof