在Rebol3中创建Hostkit事件

时间:2015-03-24 15:38:52

标签: sdl rebol rebol3

我正在制作具有GUI事件的Rebol 3扩展程序。 现在,我使用同步回调来管理它,所以每次事件发生像鼠标移动一样,C扩展调用Rebol回调函数。 但是我想使用REBEVT和RL->事件管理它。

以下是代码示例:

case SDL_MOUSEMOTION:

    Add_Event_XY(
        RootGob, 2, (event.motion.x + (event.motion.y << 16)), EVT_MOVE
    );

    /*
    cbi.obj = CBI_SDL_MOUSEMOTION.obj;
    cbi.word = CBI_SDL_MOUSEMOTION.word;
    RXI_COUNT(args) = 1;
    RXI_TYPE(args, 1) = RXT_PAIR;
    args[1].pair.x = event.motion.x;
    args[1].pair.y = event.motion.y;
    n = RL_CALLBACK(&cbi);
    if(n == 0) {RL_PRINT("%s\n", "callback error");}
    */
    break;

但是当我在Rebol等待时,我得到了:

>> wait 1
** Script error: wake-up does not allow none! for its port argument
** Where: loop -apply- wait
** Near: loop 8 [
    unless event: take sport/state [break]
    port...

如何使端口不为空?

1 个答案:

答案 0 :(得分:1)

在R3代码中进行了一些搜索之后,我发现我必须按如下方式进行初始化:

system/view/event-port: open event://

现在它有效! (使用R3主线)