4.619 Terminal manager - E4000010 - (Revised 11 Nov 2003)

Click here to see the updates in the latest version.

This terminal manager has a number of enhancements designed to simplify various programming tasks. Unfortunately these will only become easily accessible when corresponding enhancements are added to MAPEDIT, and in the meantime you have to make the required changes to maps by editing MAPPOST format output from MAPMAKE and then posting back the modified maps with MAPPOST.

Button Notifications

DP4 buttons and VCR buttons can be used in place of key presses. To a normal DP4 program pressing a button appears to generate a key press. However, this is not done using regular Windows messages, making it very difficult to incorporate the buttons into a Windows style application, or to modify the behaviour of the buttons using subclassing. In order to make this easier a new flags is available for buttons,VCR buttons and button like header controls: BTF_NOTIFY (8192). When this flag is set clicking the button will cause a WM_CHAR message to be posted to the main window of the application (as returned by trm_get_hwnd()), instead of the character being added to the terminal manager input buffer directly.

Two possible uses of this are as follows:

22 May 2001 The previous 4.619 terminal manager expected to receive these special WM_CHAR messages with the high order word of wParam set to 0xffff, as this is how they are posted. However on Windows NT and Windows 2000 the operating system zeros this word before the message is received, so the terminal manager has been updated to ignore the high order word. A similar problem has been observed when a DP4 program that uses the terminal manager calls an OSDI built with Borland C++ Builder. This program hooks the WM_CHAR message and in some circumstances zeros the whole of wParam apart from the low order byte. Therefore the main window of this terminal manager accepts the registered message "DP4_DDI_INCH" as a synonym for WM_CHAR.

Right Aligned Maps

It is possible to control the horizontal position of a map by specifying a non zero value for the X coordinate of the parent control of the map. (This is the first control that appears in a map's MAPPOST format print out, but it is not currently accessible from MAPEDIT). Up till now it was only possible to specify the position as an offset from the left edge of the screen. It is now possible to specify a position as an offset from the right edge of the screen. This is done by specifying an X coordinate between 30000 and 32767. An X coordinate of 32767 aligns the right edge of the map on the right edge of the application window, a value of 32766 aligns one pixel to the left of this and so on. (N.B. The offset is calculated directly in pixels. It is NOT converted using terminal manager internal coordinates as offsets from the left would be.)

Tab Buttons - 18 Sep 2000

4.616 introduced Tab Buttons, which can be used to simulate multi page dialogs. However, sometimes you may want to have Tabs to select between a number of display only pages. This did not work with the existing Tab buttons, so a new flag is available, called BTF_NODIALOG, with value 16384. You should use this if the page a Tab button displays does not have an associated dialog. This kind of Tab Button works well inside QAB, whereas Tabs with associaed dialogs are hard to use other than in DP4 C programs.

Positioning of Attached Maps - 23 Feb 2001

4.617 introduced a change in the way attached maps were positioned. If the map would extend below the bottom of the application window, or the screen it was positioned with the bottom left hand corner at the attach point, rather than the top left. This was intended to make it easy to implement the same behaviour as arises with Windows "Combo boxes". Unfortunately this upset a number of existing applications. In 4.618 the positioning rule is changed slightly again. Now, only maps that have Pop Up Window type will be positioned like this, and other attached maps will revert to the old positioning rules. Please note that "Untyped" maps may often acquire this type when they are displayed. The map type is accessed in the Map Properties Screen of MAPEDIT. There is a bug in MAPEDIT, compared with version 4.5xx - it does not automatically assign a suitable type to maps being edited within PROGMAKE.

On Screen Keyboard Buttons - 16 Mar 2001

There was a minor bug in the On Screen Keyboard buttons introduced into release 4.617. If the user pressed the mouse button with the mouse on the button but released the mouse button with the mouse off the button the button was not redrawn.

DEAD Attached Maps - 22 May 2001

A slight change has been made to the way map_attach() works. In previous versions if a map was already attached to another map then attaching a new copy of it would clear the first copy unless the first copy was DEAD. However this would cause a problem if the same map was repeatedly attached already DEAD, a situation that can arise in QAB programs that display "comfort messages". Because the first copy was not cleared there was effectively a memory leak until the base map was cleared, and in some situations this could cause a GPF. From now on the first copy of the map will also be cleared when it is DEAD. This is a bug fix, but because it represents a change in behaviour will not be applied to earlier versions.

Reduced Flicker - 6 Jun 2001

In previous versions moving the mouse over a greyed out option in a menu, especially one consisting of buttons, could cause noticeable flicker. In the latest version moving the mouse over a greyed out menu option has no effect on the screen.

10 September 2001 The various changes to buttons introduced an obscure bug which which stop navigation working properly in some dialogs. For example PROGMAKE would no longer allow a new procedure to be inserted at the top of the procedure tree. This is now fixed

29 October 2001 The initial value of radio button fields was not set correctly when help messages were available and training mode was on. This bug was introduced into 4.619 and is not in earlier versions.

08 July 2002 Header controls were no longer drawn correctly while they were being sized. This bug was introduced into 4.619 and is not in earlier versions. Also fixed is a bug whereby maps displayed at a negative coordinate (off the left edge of the screen) could completely disappear on Windows NT/2000/XP.

05 Mar 2003 The WM_GETTEXTLENGTH message was not handled correctly. This resulted in a GPF on Windows XP Tablet PC edition. It is not known why only this version of Windows appears to be affected.

11 Nov 2003 Clicking on a VCR that caused the containing map to be destroyed could cause problems for a following Windows Dialog such as a message box or the DFPRINT Page Setup dialog. The application could hang because the dialog could not get focus.

DP4 Version Compatibility

4.616+ (requires updated usrlibt.dll and syslibt.dll, both included with the download)

This is the official 4.619 trmw32.dll and is no longer a beta.

Downloads

4.619 trmw32.dll