How everything works
- The server assigns ihab's and hwnd's - threads' and windows' indexes.
- Windows get messages.
- Messages are got from either queues, assigned to ihab's, or directly,
- if they were sent from the same thread, or indirectly, but without placing into a queue,
- if they were sent from another thread of a process. Indirectly - that means it calls a window proc from inside WinGetMsg.
- If a message is sent to another process, it is sent via server.
- If message is “Sent” - then it's waiting, if it is “Post'ed”, then it put into the process message queue, also inside WinGetMsg
A server by F_CMD_GET_IHAB client's request issues a free ihab, and clientId
How to write programs
- Let's take a PM program source. The includes are changed from os2.h to F_OS2.hpp and defines from INCL_DOS, INCL_WIN to F_INCL_DOS, F_INCL_WIN; and #include “PM_FPM.h” is added. And adding the FreePM client libraries to a project.
- For a FreePM program to be working under PM and if we don't want to change all F_xxx calls to WinXXX or GpiXXX, we add the \FreePM\lib\PMcompat\PM_api.cpp file into the project