про SOM
От: Bаня  
Дата: 04.07.20 23:36
Оценка:
Здравствуйте,

1. имеем класс c++ типа
class MySuperDuperMegaClass: public sciter::om::asset<MySuperDuperMegaClass>
{...}

из tis к нему нужно тоже обращаться как MySuperDuperMegaClass.MyFunc() ?
на мой взгляд неразумно


2. возьмём простейший класс на c++:
class counter : public sciter::om::asset<counter>
{
    int    Increment()
    {
        count++;
        return count;
    }
    int    Decrement()
    {
        count--;
        return count;
    }
    int    count = 0;

    SOM_PASSPORT_BEGIN( counter )
        SOM_FUNCS( SOM_FUNC( Increment ), SOM_FUNC( Decrement ) )
    SOM_PASSPORT_END
};

и его прикручивание:
class counter*    pCounter1 = new counter();
class counter*    pCounter2 = new counter();
SciterSetGlobalAsset( pCounter1 );
SciterSetGlobalAsset( pCounter2 );

как теперь это юзать в tis?
никак, то есть как global namespace object нужно использовать не название класса, а набор букв по желанию как и в п.1


3. зачем SciterSetGlobalAsset пытается удалить объект?
class counter Counter1;
...
SciterSetGlobalAsset( &Counter1 );

на выходе из программы вызывает head corruption

вообще я думаю нужно понимать, что не все программы юзают UI от и до,
окно UI может создаваться и закрываться тысячи раз, то есть должен быть Attach/Detach или Add/Remove


4. как прикрутить sciter::om::asset<MySuperDuperMegaClass> к фрейму?

ответ: юзать sciter::event_handler + attach_event_handler/detach_event_handler, но тогда зачем SOM?


это просто мысли вслух, естественно ваше право оставить как есть, главное
BEGIN_FUNCTION_MAP
FUNCTION...
END_FUNCTION_MAP

не ломать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.