Как все это работает.
- Сервер раздает ihab'ы и hwnd - индексы ниток и окон.
- Окна получают сообщения.
- Сообщения получаются либо из очередей, привязанных к ihab, либо напрямую,
- есле они send из той же нитки, либо ненапрямую, но без помещения вочередь,
- если они send из другой нитки процесса. Ненапрямую - значит оно вызывает процедуру
- окна внутри WinGetMsg.
- Если сообщение посылается другому процессу, оно посылается через сервер.
- Если send - то ждется, если post, то пихается в очередь процесса, опять-таки внутрях WinGetMsg
Сервер по запросу клиента F_CMD_GET_IHAB выдает свободный ihab, и clientId
Как писать программы:
- Берется исходник для PM. Исправляются инклуды с os2.h на F_OS2.hpp
и дефайны с INCL_DOS, INCL_WIN на F_INCL_DOS, F_INCL_WIN добавляется #include “PM_FPM.h” и добавляем в проект клиентские библиотеки FreePM.
Обратная совместимость.
- Чтоб программа для FreePM могла работать под PM и чтоб не менять все вызовы
F_xxx на WinXXX или GpiXXX добавляем в проект файл \FreePM\lib\PMcompat\PM_api.cpp