【问题标题】:Not getting resize event没有得到调整大小事件
【发布时间】:2021-10-28 05:09:36
【问题描述】:

首先,列出我希望我的窗口接收的事件,然后创建我的 窗口,然后我在一个while循环中运行这个事件处理程序。我的目标是在调整窗口大小时打印 hello,但我不明白为什么不打印。这是代码:

uint32_t value_list[] = {
    XCB_NONE,
    XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS |
    XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_RESIZE_REDIRECT,
  };

  xcb_create_window(
    result->connection,
    XCB_COPY_FROM_PARENT,
    result->window,
    screen->root,
    0, 0, width, height,
    0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
    screen->root_visual,
    XCB_CW_EVENT_MASK,
    value_list);

if(intern_window->event) {
    switch(intern_window->event->response_type & ~0x80) {
      case XCB_EXPOSE: {
        xcb_flush(intern_window->connection);
        break;
      }
      case XCB_CLIENT_MESSAGE: {
        if( ((xcb_client_message_event_t*)intern_window->event)->data.data32[0] == intern_window->delete_reply->atom ) {
          intern_window->closing = true;
          free(intern_window->delete_reply);
        }
        break;
      }
      case XCB_RESIZE_REQUEST: {
        puts("Hello");
        break;
      }
    }
  }

【问题讨论】:

  • 你想要XCB_EVENT_MASK_STRUCTURE_NOTIFY(你已经拥有)和事件XCB_CONFIGURE_NOTIFY(你没有)。调整大小请求是另一回事。不过,在您的设置中,您应该会收到调整大小的请求。其他情况(公开和客户端消息)是否有效?见tronche.com/gui/x/icccm/sec-4.html#s-4.2.4

标签: c x11 xcb


【解决方案1】:
uint32_t value_list[] = {
    XCB_NONE,
    XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS |
    XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_RESIZE_REDIRECT,
  };

  xcb_create_window(
    result->connection,
    XCB_COPY_FROM_PARENT,
    result->window,
    screen->root,
    0, 0, width, height,
    0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
    screen->root_visual,
    XCB_CW_EVENT_MASK,
    value_list);

所以,value_list[0]XCB_NONEvalue_list[1] 是您想要的事件掩码。然后您只使用XCB_CW_EVENT_MASK,因此value_list[0] 是您的事件掩码,而value_list[1] 将被忽略。

您没有收到这些事件,因为您没有要求它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2011-01-13
    • 2019-02-01
    • 2022-10-01
    • 2011-04-29
    相关资源
    最近更新 更多