Welcome to PMM, a Presentation Manager Monitor TABLE OF CONTENTS ----------------- 1. Introduction 2. Installing and Using PMM 3. How to Get Help 4. Hints and Tips 5. Limitations 6. Notes about PMM Version 1.0 7. Files on the Archive 1. Introduction --------------- PMM is a tool to show the message stream in a Presentation Manager application. It is designed to be linked to an application under development, and reports on the message stream relative to that application. PMM is Freeware. It may be freely distributed, provided the distribution package is not modified. No person or company may charge a fee for the distribution of PMM, other than to cover cost of media, without written permission from the author. 2. Installing and Using PMM --------------------------- PMM Version 1.0 has no INSTALL program. There are a few steps to install and use the tool. Read the section "Installing and Using PMM" in the online document PMMMAN.TXT. After finishing the installation you can run the included example program PMMSAM and have a first look at the features and output of PMM. NOTE: Dynamic Link Libraries use the stack space of the calling process. PMM needs a minimal stack space of about 100 Kb. If you are experiencing any problems consider augmenting the application stack space to more than 100 Kb. 3. How to Get Help ------------------ Any comments, suggestions, bug reports, etc. will be very welcome. E-mail to: salvador_amoros@teleline.es 4. Hints and Tips ----------------- 1. If you use send message hooks try, whenever possible: - when initiating an application, install your hooks first and then create the PMM trace session - when terminating an application, destroy the PMM trace session first and then uninstall your hooks You cannot use PMM if you do not have access to the source code for the hooks. See the section "Using Hooks with PMM," in the manual. 2. If you subclass windows and use PMM, I strongly recommend that you use the functions PMMSubclassWindow, PMMSetWindowPtr and PMMQueryWindowPtr. 3. Configure PMM to meet your needs. Trace only the message groups you are interested in. This will result in improved performance for PMM. 4. If you need *all* messages occurring in an application, you must create a trace session *before* any window has been created *and* you must destroy the trace session *after* all windows have been destroyed. 5. The operating system uses certain message values higher than WM_USER, which are: WM_USER + 40 to WM_USER + 42 (File Dialog Messages) WM_USER + 50 to WM_USER + 55 (Font Dialog Messages) PMM detects automatically the File Dialog Messages and the Font Dialog Messages differentiating them from user messages. PMM has no problem in distinguishing WM_USER messages, whether sent to standard dialog boxes or sent to any other window in your application. However, as a general rule, you are bound to have problems if you use WM_USER messages that are also used by other standard windows. Therefore, avoid using messages in the above ranges. 5. Limitations -------------- - Multimedia messages are detected but not interpreted - Bidirectional language support messages are not interpreted - PMM has been tested in C, C++ and classical Pascal (i.e. not object oriented Pascal). The use of PMM in languages other than C is not documented in the PMM manual 6. Notes about PMM Version 1.0 ------------------------------ I have tested PMM in C++ code and it worked correctly. A limitation, however, remains: if you want *all* messages in an application, at what point in code should be called the function PMMDestroyTraceSession? It should be a point where: (1) *all* windows have been destroyed (even the windows on the stack) and (2) the message queue has not been destroyed. I have not dedicated much time to this question. Any suggestions? 7. Files on the Archive ----------------------- Files on the compressed archive PMM100.ZIP: FILE_ID.DIZ Id file for BBSs README.TXT This file PMMMAN.TXT PMM Manual PMMPOS2.H PMM Include File PMM.H PMM Include File PMM.LIB PMM Library File PMM.DLL PMM Dynamic Link Library File PMMSAM.MAK PMM Sample Make File PMMSAM.LNK PMM Sample Link File PMMSAM.DEF PMM Sample Module Definition File PMMSAM.C PMM Sample Source C File PMMSAM.H PMM Sample Include File PMMSAM.RC PMM Sample Resource File PMMSAM.ICO PMM Sample Icon File PMMSAM.EXE PMM Sample Executable File