ru:docs:os2:freepm:workflow

Как все это работает.

  • Сервер раздает 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