Menuet/CPP ========== Frequently Asked Questions and Answers -------------------------------------- ------------------------------------------------------------------------------- Table of Contents: ------------------------------------------------------------------------------- 1. Overview 1.1 What is Menuet/CPP. 1.2 Version. 1.3 Supported Operating Systems. 1.4 Supported Graphics Packages. 1.5 Supported Compilers and extenders. 1.6 Autumn Hill's development environments. 1.7 CUA compliancy. 1.8 Memory requirements. 2. CASE Tools 2.1 Menuet Window Design Tool. 2.2 Icon Editor. 2.3 Menuet Font Editor. 3. Libraries 3.1 List of controls. 3.2 Child windows. 3.3 Icon Buttons. 3.4 Scrollable windows. 3.5 Background window updating. 4. Graphics Package Specifics 4.1 MetaWINDOW Specifics 4.1.1 Graphics modes. 4.2 Flash Graphics 4.2.1 Graphics modes. 4.3 Genus GX 4.3.1 Graphics modes. 4.4 Borland's BGI 4.4.1 Graphics modes. 4.4.2 Mouse. 4.5 Microsoft's Graphics library 4.5.1 Graphics modes. 4.5.2 Mouse. 5. Extension Packages 5.1 Pen Extensions. 5.2 Lab Extensions. 5.3 View Extensions. 6. Autumn Hill Software Incorporated. 6.1 Address, phone, fax, BBS, etc. 6.2 Technical Support. ------------------------------------------------------------------------------- Answers: ------------------------------------------------------------------------------- 1. Overview 1.1 What is Menuet/CPP. Menuet/CPP is the third generation in Graphical User Interface packages from Autumn Hill Software. Menuet/CPP is implemented in the C++ language which is clear and intuitive for GUI programming. Many of the features included with Menuet/CPP are discussed in later sections of this FAQ. 1.2 Version. Autumn Hill is currently shipping version 2.0a of Menuet/CPP. 1.3 Supported Operating Systems. Menuet/CPP supports MS-DOS 3.3, 5.0, and 6.0. Other versions of DOS such as PC-DOS, DR-DOS, Novell DOS, and CompaqDOS may also work, but are not explicitly supported by Autumn Hill Software. 1.4 Supported Graphics Packages. Menuet/CPP supports several graphics packages for a wide variety of needs. MetaWINDOW by Metagraphics Corporation, BGI from Borland International, and the Microsoft Graphics Library are all supported. Section 1.5 lists the compatability between compiler, extenders, and these graphics toolkits. 1.5 Supported Compilers and extenders. See the file COMPILER.DOC for a description of supported compiler, extender, and graphics package combinations. 1.6 Autumn Hill's development environments. Autumn Hill prefers two development environments for Menuet/CPP. The first includes the Borland C++ 3.1 compiler with all of the graphics packages. The Borland compiler is an excellent compiler, it is fast, creates compact code, and has the best debugger on the market. The Zortech C++ 3.1 compiler with Flash Tek's X32-VM extender is also used in development. The X32-VM is a great extender, it is royalty free, and works well with the Zortech compiler. Programming in protected mode is excellent for debugging purposes since many "bugs" in programs can be found as they will cause a program to crash when the "bugs" are encountered. For instance, in real mode a reference outside of an array will return bogus information. In protected mode a reference outside of an array will cause a protection viloation and the program will halt at that point of execution. 1.7 CUA compliancy. IBM developed the Common User Access(CUA) paradigm to unify the many user interfaces in the world. OS/2 and MS-Windows are the major user interfaces that are CUA compiant. The full CUA documentation sets are available through IBM. Most of Menuet/CPP is CUA compliant. For instance, The ALT-F4 key combination will close a window. But There is no idea of a currently active control that can be changed by pressing the TAB key to move to the next control. 1.8 Memory requirements. See the file MNSAMP1.DOC for a list of executable sizes for the "Hello, World" example program. 2. CASE Tools 2.1 Menuet Window Design Tool. The Menuet Window Design Tool(mWDT) is used to design screens and windows using a drop and drag interface. The screens can be saved to binary resource files that can then be converted directly to source code or dynamically loaded into a Menuet/CPP application. NOTE: Currently the mWDT is still in Beta testing. It will not save current WRF files and will not be able to create source code. We are working on this and hope to have it soon. 2.2 Icon Editor. The Icon Editor(IE) is used to design icons for use in Menuet/CPP. The icon editor supports such functions as: line, box, and ellipse drawing, region fills, color replacement, zoom in and out, framed icons, multiple brushes and pens, copy, cut, and paste, and more. Icon files saved in IE can be read directly into Menuet/CPP. 2.3 Menuet Font Editor. The Menuet Font Editor(MFE) is used to design and edit font files for use with Menuet/CPP. Menuet/C includes over 130 font files with between 30 and 40 different type faces ready for use in an application. 3. Libraries Follows a list of controls included in Menuet/CPP: Aperture Button Button Group Check Button Check Group generic Combo Box text Combo Box Edit Field Guage Group Box Icon Key text List generic List Mask Multi-Line Edit Field bar Menu box Menu Scroll Bar Spin Button Toggle Button Toggle Group static Text System Menu Button Minimize Button Maximize Button Title Bar Window Border more... 3.2 Child windows. Child windows are not supported in Menuet/CPP. All windows are sibling windows. One thing that can be done is to make the main window the size of the full screen and then set it's yBACKGROUND flag. Then all the other windows will appear on top of that window. 3.3 Icon Buttons. Adding an Icon image to a button is quite simple. First you need to load in an icon file using the GetStockIcon*() functions or with the mIconType1File class. Then create an icon symbol and attach it to the button. Follows a sample that shows how to do it. { // Instantiate a button mRect butRect( 20, 20, 150, 50 ); mWnCtlButton *but = new mWnCtlButton( butRect, &WM->systemfont(), " " ); // Load the icon mIconType1File *if = new mIconType1File( "MYICONS.ICN", arrCNV ); // Create the icon symbol for the button but->getnodes()->sym = new mIconCtlSym( mPoint( 22, 22 ), if->width(), if->height(), if->map( 1 ) ); // We can just attach the new icon symbol to the first nodes sym // pointer since we know that it is not used by default on a button. } 3.4 Scrollable windows. Windows can automatically have scroll bars attached to them that will resize with the window and should be used for window scrolling. The actual scrolling of window client areas is not handled by Menuet/CPP. Pointers to the system scroll bars can be obtained with the mWindow::getsyscontrol() function. The system scroll bars are just normal scroll bars so all of the scroll bar functions and functionality are the same. 3.5 Background window updating. Updating a window that is in the background is a pretty simple task. There are a couple of things to keep in mind and they will be outlined in the sample below. The following shows how to draw something in a window that is not the top window. // prototype for task to actually draw in window void update_this_window( void ); // Identification value for our timer event static int CLK_TIMER_ID 999 // Task for window to constantly update on a timer tick int wind_task( mMsg& msg, mWindow& win ) { if ( msg.noun != mEVT ) return 0; if( (evt->devtype == devTIMER) && (evt->key.keyvalue == CLK_TIMER_ID) && (! win.getstatus(yMINIMIZED)) ) { // Save the old view rect and clip rect mRect oldV = mGdMgr::getviewrect(); mRect oldC = mGdMgr::getcliprect(); // Set the viewport to this window mGdMgr::setviewport( win.extent() + win.getwnorigin() ); // Hide the mouse cursor before drawing anything (*win.getwnmgr()) << mMsg( mMOUSE, mHIDECURSOR ); if ( win.getstatus( yCURRENT ) ) // Top Window? { mGdMgr::setcliprect( win.extent() ); update_this_window(); } else { mRect r = win.getwnorigin(); // Get the viewable rectangles of the window mQuilt *q = win.getwnmgr()->viewablearea( &win, r ); // draw each of them for( int i=0; inr; i++ ) { mGdMgr::setcliprect( q->rt[i] - r ); update_this_window(); } delete q; } // Show the mouse (*win.getwnmgr()) << mMsg( mMOUSE, mSHOWCURSOR ); // set the view and clip rects back to original values mGdMgr::setviewport( oldV ); mGdMgr::setcliprect( oldC ); } if( (evt->devtype == devTIMER) && (evt->key.keyvalue == CLK_TIMER_ID) ) win.getwnmgr()->tmdevice().set( 17, CLK_TIMER_ID ); } 4. Graphics Package Specifics 4.1 MetaWINDOW Specifics 4.1.1 Graphics modes. MetaWINDOW supports more graphics devices and modes than any other graphics package on the market today. Menuet/CPP allows an application to run in any of the video modes supported by MetaWINDOW. To run an application in a specific video mode the MGDMGR environment variable must be set to one of the predefined values in MetaWINDOW. In the MetaWINDOW file: METCONST.H, there are multiple definitions for all of the supported video modes. For instance, VESA Mode with 640x480 in 256 color mode would be set with the following command: SET MGDMGR=VESA640X480X NOTE: this is best set in AUTOEXEC.BAT files so that it does not need to be remembered every time an application must run. 4.2 Borland's BGI 4.2.1 Graphics modes. Borland's BGI supports a wide variety of video cards and modes. Currently there is not a good way to set the video mode using the BGI, but there will be in a future release. 4.2.2 Mouse. With the BGI Menuet/CPP uses the Microsoft mouse driver to handle the mouse. This means that the mouse driver is responsible for drawing, hiding, moving, and reporting on the mouse cursor. As of release 8.x of the Microsoft mouse driver, Microsoft did not support SVGA modes. This means that in 256 color modes or 800x600 or above modes the mouse will not be visible. Unless Microsoft updates their mouse driver this will not be possible. 4.3 Microsoft's Graphics library 4.3.1 Graphics modes. Microsoft's Graphics Library supports a wide variety of video cards and modes. To run an application in a special video mode the MGDMGR environment variable should be set. The values MGDMGR can be set to are outlined in the MS manuals. For instance to set the display to standard VGA 640x480 16 color mode, set MGDMGR=_VRES16COLOR. 4.3.2 Mouse. With the MS Graphics packages, Menuet/CPP uses the Microsoft mouse driver to handle the mouse. This means that the mouse driver is responsible for drawing, hiding, moving, and reporting on the mouse cursor. As of release 8.x of the Microsoft mouse driver, Microsoft did not support SVGA modes. This means that in 256 color modes or 800x600 or above modes the mouse will not be visible. Unless Microsoft updates their mouse driver this will not be possible. 5. Extension Packages 5.1 Pen Extensions. Menuet/CPP offers an extension library for use on PenDOS from CIC for developing applications for pen-based computer. All normal Menuet/CPP controls work with the pen just as they would with the mouse. There are also some special controls developed for PenDOS. These controls include pen input fields, both single line and mulitple line, sketch boxes, and more. For more information contact Autumn Hill sales department listed below. 5.2 Lab Extensions. Menuet/CPP offers an extension library with a set of custom window controls that act like laboratory controls. CRT Display, Strip Chart Recorder, Toggle switches, Dials, and Potentiometers are some of the controls included in this package. Contact Autumn Hill's sales department for more information. 5.3 View Extensions. Menuet/CPP offers an extension library capable of reading many popular graphics file formats including: BMP; PCX; MSP; IMG; TIFF; WPG; EPS; TGA; and more. These images can be read into a Menuet/CPP application and displayed on the screen or saved to another file. The image data is readily available to the application so a graphics file editor would be simple to implement. 6. Autumn Hill Software Incorporated. 6.1 Address, phone, fax, BBS, etc. Autumn Hill Software Incorporated 1145 Ithaca Drive Boulder, Colorado 80303 USA Phone: (303)494.8865 Fax: (303)494.7802 BBS: (303)494.8868 (N/8/1 1200-14.4K) 6.2 Technical Support Autumn Hill Software Incorporated 1145 Ithaca Drive Boulder, Colorado 80303 USA Phone: (303)494.8869 Fax: (303)494.7802 BBS: (303)494.8868 (N/8/1 1200-14.4K)