Сообщение от
gl00mie
Аксапта написана для работы под управлением виндов, поэтому если ее научить, то она сможет делать (для 3.0 - почти) все, что могут делать другие виндовые приложения, другой вопрос, насколько это будет трудоемко. С вариантом callback-функции могут возникнуть определенные сложности, потому что там необходимо, чтобы эта функция была скомпилирована с учетом определенных соглашений о вызовах (т.н.
__stdcall). Под event'ом разработчики из Сканкода, видимо, понимают дергание обработчиков событий ActiveX-объектов, Аксапта это поддерживает, но нужно, чтобы сперва соотв. ActiveX-компонент кто-то написал. В этом смысле, наверно, вариант с обработкой оконных сообщений выглядит наиболее простым с точки зрения реализации на Х++. Пример реализации цикла обработки оконных сообщений можно посмотреть в \Classes\TableLookup_RU\waitAndSearch (по идее этот класс должен быть в 3.0, но сейчас проверить у меня нет возможности). Вкратце, в Windows есть окна, окна принимают сообщения, для которых организуется очередь, и есть callback-функции - обработчики оконных сообщений, в т.ч. обработчики по умолчанию, выполняющие большую часть рутинных операций; обработчики оконных сообщений также называют оконными функциями (Window Proc). Сообщение окну может быть помещено в очередь (для асинхронной обработки) либо может быть отправлено (для синхронной обработки с использованием прямого вызова оконной функции). Окна и оконные функции могут использоваться не только для отрисовки и реализации собственно окон (включая меню, кнопки и проч.), но и для сценариев интеграции, как в рассматриваемом случае. Обычно приложение организует
цикл обработки оконных сообщений, который представляет собой нечто вроде:[php]while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}